@mezigar

Как сделать правильную иерархию моделей в Django?

У меня есть модели коктейль, ингредиент и порция. Не понимаю, как сделать так, чтобы при выборе ингредиента нужно было указывать его порцию. Как нужно организовать модели, чтобы все работало правильно? На данный момент модели выглядят так:
from django.db import models


class Cocktail(models.Model):
    title = models.CharField(max_length=50, db_index=True, verbose_name='Название')
    ingredients = models.ManyToManyField('Ingredient', 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)

    def __str__(self):
        return 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, blank=True, verbose_name='Порция')

    def __str__(self):
        return self.portion

    class Meta:
        verbose_name_plural = 'Порции'
        verbose_name = 'Порция'
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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