python - Can't I add a list to my models.py in django?
问题描述
I'm quite new in Django and in this project I need to manage information about a restaurant. The problem is that I can't add more than one ingredient required to a recipe
My models.py
is this:
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)
After replacing ingredients = models.CharField()
for ingredients = models.ManyToManyField()
a list of all ingredients appear:
But when I add a new ingredient to my Ingredient
model, it automatically appears in every single menu_item
:
解决方案
You need to have a ManyToMany relationship in your RecipeRequirement model. This will allow you to select multiple ingredients for any one RecipeRequirement object. Read more here: 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)
推荐阅读
- excel - 按条件提取唯一值
- java - 如何以编程方式在 Java 中创建 Kafka 2.3.0 主题
- json - 如何在新的 Windows 终端配置文件中使用 Anaconda 运行 powershell.exe?
- cron - 在 Openshift 中的 cronjob 上挂载卷
- node.js - ipcMain:event.reply 不是函数
- c++ - 从 shared_pointer 创建weak_pointer 并重用基本指针
- python - 用熊猫中的标题替换行
- webpack - git 合并冲突后运行 npm-run 时出错
- java - Tomcat启动失败随机崩溃
- spring - 在 Spring Boot 控制器中验证 HTTP POST 请求中的请求正文是否为空