gpt4 book ai didi

python - Django 外键关系

转载 作者:行者123 更新时间:2023-11-29 11:36:30 24 4
gpt4 key购买 nike

我最近开始使用 Python 和 Django 制作一个网站,但遇到了一个我无法解决的问题。

你可以肯定,这是因为我完全缺乏经验,而且我忽略了一些简单的事情或做了一些愚蠢的事情,但是哦好吧..

在我的网站上,我有一个页面用于显示食谱的详细信息(描述、成分、说明等)。我这样显示:

views.py
class RecipeView(generic.DetailView):
model = recipe
template_name = 'whatsfordinner/recipe.html'
context_object_name = 'details'

到目前为止,我已经能够显示我的单个信息,没有问题({{details.whatever}})

我的问题是指令和成分都作为外键关系存储在我的数据库中,因此需要以不同的方式输出。我的数据库如下所示:

class recipe(models.Model):
title = models.CharField(max_length=255)
description = models.TextField(default="No decsription added")
image = models.ImageField(upload_to='images/',
default='images/default.jpg')
total_favourites = models.IntegerField()
servings = models.IntegerField()

def __str__(self):
return self.title

class ingredients(models.Model):
recipe = models.ForeignKey(recipe)
ingredient = models.CharField(max_length=255)

我很难为我选择的食谱输出相关成分,我希望得到一些指导。

最佳答案

对于配方对象,例如 r :

r.ingredients_set.all()将列出与该食谱链接的所有成分。

您可以进一步过滤: r.ingredients_set.filter(title__startswith='clover')

Django 文档中有一个全面的指南: https://docs.djangoproject.com/en/1.9/topics/db/examples/many_to_one/

假设您想要在views.py中列出食谱的所有成分:

ingredient_list = r.ingredients_set.all()

然后将上下文字典中的成分列表传递到模板。如果你不知道上下文字典是什么,那你在做什么,请阅读 Django 文档!很多人付出了很多努力来创建漂亮的文档。

假设context['ingredients'] = ingredient_list ,其中context是您传递给模板 html 的上下文字典。然后在您的模板中,使用 Django 模板语言来实现如下所示:

{% for i in ingredients %}
<p>{{ i.ingredient }}</p>
{% endfor %}

这里ingredientsingredient_list您使用上下文字典传递,并且对于每个成分对象 i在 for 循环中,您显示 <ingredient object i>.ingredient 的值

如果有帮助的话,这是官方教程的链接。 https://docs.djangoproject.com/en/1.9/intro/tutorial01/

关于python - Django 外键关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36498820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com