[英]How to add an array based filed in django model
我正在制作一个应用程序 atm,我从 json 文件中获取虚拟数据。 我在这个文件中的归档看起来是这样的:
{ "model": "card.model", "pk": 2222, "fields": { "meal_1": 5555, "meal_2": 5556, "meals": "[5555, 5556]" } } { "model": "meal.model", "pk": 5555, "fields": { "name": "Pizza", "vagan": True } } { "model": "meal.model", "pk": 5556, "fields": { "name": "Sandwich", "vagan": False } }
我有一个 Meal 类,其中包含:名称、照片、描述。 我还有 Card 类,可以直接从 json 文件中获取信息。
class Card() { meal_1 = models.ForeignKey( Meal, related_name='meal_1" ) meal_2 = models.ForeignKey( Meal, related_name='meal_2" ) meals=[] ?? }
我如何添加一个包含对这些膳食的引用的数组字段。 我想要实现的是循环这顿饭并放入 django 模板中。 现在我通过参考每个文件来做到这一点:instance.meal_1.name...等。
我认为您可以将 Card 作为 ForeignKey 添加到您的 Meal 课程中。 然后在模板中,您可以为卡片中的每顿饭循环。
膳食.py
class Meal(models.Model):
...
card = models.ForeignKey(Card, on_delete=models.CASCADE)
...
...
模板.html
{% for meal in card.meal_set %}
{{ meal.name }}
{% endfor %}
我认为 Night Owl 的方法非常好,但您还可以采用另一种方法。 那就是使用ManyToManyField
。
在给定的JSON
, meal_1
和meal_2
id 在meals
字段内。 所以我认为你在创建模型时没有必要考虑meal_1
和meal_2
(因为可能有超过 2 顿饭)。 所以你可以尝试在Card
和Meal
之间创建 ManyToMany Relation 。 像这样:
class Meal(models.Model):
name = models.CharField(max_length=255)
vagan = models.BooleanField()
class Card(models.Model):
meals = models.ManyToManyField(Meal)
# usage
meal = Meal.objects.create(name="sandwitch", vegan=False)
card = Card.objects.create()
card.meals.add(meal)
# template
{% for meal in card.meals.all %}
{{ meal.name }}
{{ meal.vegan }}
{% endfor %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.