Не могу ли я добавить список к моему models.py в django?
Я совсем новичок в Django и в этом проекте мне нужно управлять информацией о ресторане. Проблема в том, что я не могу добавить более одного ингредиента, необходимого для рецепта
Мой models.py выглядит следующим образом:
from django.db import models
# Create your models here.
class Ingredient(models.Model):
name = models.CharField(max_length=35)
quantity = models.IntegerField()
unit = models.CharField(max_length=5)
unit_price = models.FloatField()
def __str__(self):
return self.name
class MenuItem(models.Model):
title = models.CharField(max_length=35)
price = models.FloatField()
example = models.ImageField()
def __str__(self):
return self.title
class RecipeRequirement(models.Model):
menu_items = models.ForeignKey(MenuItem, default = 1, on_delete=models.SET_DEFAULT)
ingredient = models.CharField(max_length=35)
quantity = models.FloatField()
def __str__(self):
return str(self.menu_items)
class Purchase(models.Model):
menu_item = models.ForeignKey(MenuItem, default=1, on_delete=models.SET_DEFAULT)
timestamp = models.DateTimeField()
def __str__(self):
return 'Purchase ' + str(self.menu_item) + str(self.timestamp)
Я считаю, что ваш Ingredient
класс должен иметь ForeignKey
, связанный с RecipeRequirement
, чтобы добавить более одного ингредиента, связанного с рецептом.
Я предлагаю использовать такой сайт, как https://drawsql.app/, чтобы получить лучшую визуализацию связей вашей базы данных.
В вашей модели RecipeRequirement необходимо иметь отношение ManyToMany. Это позволит вам выбирать несколько ингредиентов для одного объекта RecipeRequirement. Подробнее читайте здесь: Django ManyToMany Fields
class RecipeRequirement(models.Model):
menu_items = models.ForeignKey(MenuItem, default = 1, on_delete=models.SET_DEFAULT)
ingredients = models.ManyToManyField(Ingredient)
quantity = models.FloatField()
def __str__(self):
return str(self.menu_items)
Установите ингредиенты в классе RecipeRequirement как поле ManyToMany в классе Ingredient:
class RecipeRequirement(models.Model):
menu_items = models.ForeignKey(MenuItem, default = 1, on_delete=models.SET_DEFAULT)
ingredients = models.ManyToManyField(Ingredient)
quantity = models.FloatField()
def __str__(self):
return str(self.menu_items)