django: логическое поле, взаимоисключающее между дочерними строками
Первый пост здесь:) Я изучаю Python и фреймворк Django с помощью простого приложения для создания фотоальбомов. Я работаю через админ сайта только сейчас, а django v.2.1.
Там есть фотоальбом и таблица изображений. Фотоальбом может иметь много изображений, и изображение может быть связано со многими фотоальбомами, поэтому я смоделировал отношение "многие ко многим" через промежуточную таблицу.
На странице изменения моего фотоальбома есть встроенные изображения. Все это просто и хорошо работает.
Помимо двух родительских таблиц PK, промежуточная таблица имеет дополнительное логическое поле "isCover", чтобы пользователь мог выбрать изображение в фотоальбоме в качестве обложки. Тем не менее, в строке нет никакого способа принудительно установить только одно изображение, отмеченное как обложка. Кроме того, я хотел бы, чтобы функциональность первого изображения автоматически выбиралась в качестве обложки, если пользователь не выбирает ни одного.
Как это можно сделать?
Заранее спасибо за любые идеи! Джо
1 ответ
Вы можете создать промежуточную таблицу, используя ключевое слово через многие поля
class Album(models.Model):
name = models.CharField(max_lenght=100)
class Image(models.Model):
image = models.ImageField()
album = models.ManyToManyFiels(Album, through=AlbumImage)
class AlbumImage(models.Model):
image = models.ForeignKey(Image)
album = models.ForeignKey(Album)
is_cover = models.BooleanField()