Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2013 15:56:30

barabansheg
От:
Зарегистрирован: 2011-10-16
Сообщения: 114
Репутация: +  2  -
Профиль   Отправить e-mail  

Перекрестные модели

Есть две модели:
Модель1
Модель2

У обоих есть поле ForeignKey. В Модель1 оно ссылается на Модель2, а в Модель2 на Модель1. Но, Модель1 не видит Модель2. Как можно исправить?)



Fidonet. Nod 2:5034/10. Идет набор. Подробности в личку.
Мой блог

Офлайн

#2 Март 3, 2013 16:29:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Перекрестные модели

related_name не помогает?



Офлайн

#3 Март 3, 2013 16:47:05

barabansheg
От:
Зарегистрирован: 2011-10-16
Сообщения: 114
Репутация: +  2  -
Профиль   Отправить e-mail  

Перекрестные модели

Нет. Или я не так делаю. Вот код:

class PhotoAlbum(models.Model):
    title = models.CharField(max_length = 255)
    owner = models.ForeignKey(User)    
    cover = models.ForeignKey(AlbumPhoto, related_name="cover")
class AlbumPhoto(models.Model):
    album = models.ForeignKey(PhotoAlbum, null=True, blank=True)
    photo = models.ImageField(upload_to='albums/', verbose_name=u'Фотография', null=True, blank=True)
    photo_s = models.ImageField(upload_to='albums/', null=True, blank=True)
    description = models.TextField()
    owner = models.ForeignKey(User)
    on_main = models.BooleanField()
Говорит: NameError: name ‘AlbumPhoto’ is not defined



Fidonet. Nod 2:5034/10. Идет набор. Подробности в личку.
Мой блог

Офлайн

#4 Март 3, 2013 17:03:03

nnmware
Зарегистрирован: 2012-07-21
Сообщения: 133
Репутация: +  13  -
Профиль   Отправить e-mail  

Перекрестные модели

Вам жиж подсказали где копать.
Выкиньте вообще в альбоме cover = models.ForeignKey(AlbumPhoto, related_name=“cover”)
В фотках album = models.ForeignKey(PhotoAlbum, null=True, blank=True, related_name=“photos”)
у альбома в .photos_set.all() будут все фотки.
Похоже у Вас не очень правильно спроектировано еще, судя по всему Вы так пытались решить какая картинка будет обложкой альбома.
Ну сделайте например у фотки is_cover - BooleanField

Офлайн

#5 Март 3, 2013 17:13:37

barabansheg
От:
Зарегистрирован: 2011-10-16
Сообщения: 114
Репутация: +  2  -
Профиль   Отправить e-mail  

Перекрестные модели

nnmware
Ну сделайте например у фотки is_cover - BooleanField
Да, такое решение рассматривал, но подумал, что сабж получше будет. Оказалось что нет :)



Fidonet. Nod 2:5034/10. Идет набор. Подробности в личку.
Мой блог

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version