@mezigar

Как связать таблицы в django так, чтобы можно было делать множественный выбор в множественном выборе?

Имеются модели:

from django.db import models
# from django.contrib.postgres.fields import ArrayField


class Cocktail(models.Model):
    title = models.CharField(max_length=50, db_index=True, verbose_name='Название')
    # ingredients = ArrayField(, blank=True)
    ingredients = models.ManyToManyField('Ingredient', verbose_name='Ингредиенты')
    # portions = models.ManyToManyField('Portion', verbose_name='Порции')
    # Stars or rating = Many to One

    def __str__(self):
        return f"{self.title}: id = {self.id} "

    class Meta:
        verbose_name_plural = 'Коктейли'
        verbose_name = 'Коктейль'


class Ingredient(models.Model):
    # portion = models.CharField(max_length=6, choices=PORTIONS, blank=True)
    title = models.CharField(max_length=30, db_index=True, verbose_name='Название')
    # portion = models.ForeignKey('Portion', null=True, blank=True, on_delete=models.SET_NULL)
    portion = models.ManyToManyField('Portion', null=True, blank=True)

    def __str__(self):
        return f"{self.title}"

    class Meta:
        verbose_name_plural = 'Ингредиенты'
        verbose_name = 'Ингредиент'


class Portion(models.Model):
    PORTIONS = (
        ('50 ml', 'одна часть'),
        ('75 ml', 'полторы части'),
        ('100 ml', 'две части'),
        ('150 ml', 'три части'),
    )
    portion = models.CharField(max_length=6, choices=PORTIONS, null=True, blank=True, verbose_name='Порция')

    def __str__(self):
        return self.portion

    class Meta:
        verbose_name_plural = 'Порции'
        verbose_name = 'Порция'

Как сделать так, чтобы в админке при создании коктейля из ингредиентов можно было выбрать порцию каждого ингредиента?
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы