如何在Django mod中添加基于数组的文件

2024-04-29 13:27:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个应用程序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 } }

我有一个用餐类,包括:姓名,照片,描述。 我还有一个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.meat\u 1.name。。。等等


Tags: 文件namejson应用程序fieldsmodelmodelscard
2条回答

我认为夜猫子的方法是相当好的,但也有另一种方法,你可以采取。使用^{}

在给定的JSON中,meal_1meal_2的id在meals字段内。因此,我认为在创建模型时,没有必要考虑meal_1meal_2(因为可能有两顿以上的饭)。因此,您可以尝试在CardMeal之间创建许多关系。像这样:

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 %}

我想你可以在进餐课上加一张卡片作为外宾。然后在模板中,可以循环卡片中的每顿饭

膳食.py

class Meal(models.Model):
    ...
    card = models.ForeignKey(Card, on_delete=models.CASCADE)
    ...
    ...

模板.html

{% for meal in card.meal_set %}
   {{ meal.name }}
{% endfor %}

相关问题 更多 >