django: логическое поле, взаимоисключающее между дочерними строками - PullRequest
0 голосов
/ 15 октября 2018

Первый пост здесь :) Я изучаю Python и фреймворк Django с помощью простого приложения для создания фотоальбомов.Я работаю через сайт администратора только сейчас, и django v.2.1.

Есть таблица фотоальбомов и таблица изображений.В фотоальбоме может быть много изображений, и изображение может быть связано со многими фотоальбомами, поэтому я смоделировал отношение «многие ко многим» через промежуточную таблицу.

На странице изменения моего фотоальбома есть встроенные изображения.в этом.Все это просто и работает хорошо.

Помимо двух родительских таблиц PK, в промежуточной таблице есть дополнительное логическое поле «isCover», так что пользователь может выбрать изображение в фотоальбоме, чтобы действовать какприкрытие.Тем не менее, в строке нет способа принудительно установить только одно изображение в качестве обложки.Кроме того, мне бы хотелось, чтобы функциональность первого изображения автоматически выбиралась в качестве обложки, если пользователь не выбирает ни одного.

Как это можно сделать?

Заранее спасибо за любые идеи!Джо

1 Ответ

0 голосов
/ 15 октября 2018

Вы можете создать промежуточную таблицу, используя ключевое слово через много-много полей:

 class Album(models.Model):
     name = models.CharField(max_length=100)
 class Image(models.Model):
    image = models.ImageField()
    album = models.ManyToManyField(Album, through=AlbumImage)

 class AlbumImage(models.Model):
  image = models.ForeignKey(Image)
  album = models.ForeignKey(Album)
  is_cover = models.BooleanField()
...