django 中是否有任何解决方案可以将外键列与模板内的主键进行比较,我需要在我的项目中进行特定匹配

问题描述

我的视图.py 它只是渲染对象就好了。

{% ifequal food_ing.f_name food.f_name %}

{{ food_ing.f_name }} --> 在 for 循环内我检查这个值,它是 (Pizza)。

{{ food.f_name }} -- 这也是模板中 for 循环内的 (Pizza),但我真的不知道为什么条件等于 False...

我的文件.html

{% for food in foods %}
{% for food_ing in food_ings %}

    **{% ifequal food_ing.f_name food.f_name %} <---> i need this statement to work**
        {% if food_ing.grm_amount == 0 %}
            <tr>
                <th>{{ food_ing.ing_name }}: &nbsp;&nbsp;</th><td class="text-muted font-weight-light">{{ food_ing.ltr_amount }} l</td>
            </tr>
        {% endif %}
        {% if food_ing.ltr_amount == 0 %}
            <tr>
                <th>{{ food_ing.ing_name }}: &nbsp;&nbsp;</th><td class="text-muted font-weight-light">{{ food_ing.grm_amount }} g</td>
            </tr>
        {% endif %}
    **{% endifequal %}**
{% endfor %}
{% endfor %}

我的模型.py

class IngFoodName(models.Model):
    ing_food_name = models.CharField(max_length=255,null=True)

    def __str__(self):
        return self.ing_food_name

class Food(models.Model):
    f_photo = models.ImageField(upload_to='food_pics',blank=True)
    f_name = models.CharField(max_length=40,null=False)
    f_price = models.IntegerField(null=False)
    f_description = models.CharField(max_length=255,null=True)
    p_duration = models.IntegerField(null=False)

    def __str__(self):
        return self.f_name


class FoodIngredients(models.Model):
    f_name = models.ForeignKey(Food,on_delete=models.CASCADE,null=True)
    ing_name = models.ForeignKey(IngFoodName,null=True)
    ltr_amount = models.IntegerField(default=0,null=True)
    grm_amount = models.IntegerField(default=0,null=True)

    def __str__(self):
        return "Food {0} Ingredient {1} Litre Amount {2} Gram Amount {3}".format(self.f_name,self.ing_name,self.ltr_amount,self.grm_amount)

谢谢,如果有人知道解决方案,我将不胜感激。

解决方法

您是否通过了 food_ings 视图?这个变量从何而来?

您可以打印出 for 循环内的所有值,以查看正在比较的内容以进行调试