Python速成课程,第18章-AttributeError:“Pizza”对象没有属性“entry\u set”
我刚读完第18章《埃里克·马塔斯的德扬戈入门》。我在views.py中有下面的函数Pizza,它会引发下面提到的属性错误Python速成课程,第18章-AttributeError:“Pizza”对象没有属性“entry\u set”,python,django,Python,Django,我刚读完第18章《埃里克·马塔斯的德扬戈入门》。我在views.py中有下面的函数Pizza,它会引发下面提到的属性错误 AttributeError: 'Pizza' object has no attribute 'entry_set' 当我查看我的网站并单击特定比萨饼的链接时,会发生此错误。执行此操作应打开一个新视图,即网站上的一个页面,该页面显示比萨饼的名称以及配料列表,即应执行下面的比萨饼功能 def pizza(request,pizza_id): ""
AttributeError: 'Pizza' object has no attribute 'entry_set'
当我查看我的网站并单击特定比萨饼的链接时,会发生此错误。执行此操作应打开一个新视图,即网站上的一个页面,该页面显示比萨饼的名称以及配料列表,即应执行下面的比萨饼功能
def pizza(request,pizza_id):
"""Show the toppings for a pizza"""
pizza = Pizza.objects.get(id=pizza_id)
toppings = pizza.entry_set.order_by('name')
context = {'pizza': pizza, 'toppings': toppings}
return render(request, 'pizzeria/pizza.html', context)
下面是我在models.py上的课程。Pizza类创建Pizza对象
class Pizza(models.Model):
"""The name of a specific type of pizza."""
name = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""Return a string representation of the model."""
return self.name
class Topping(models.Model):
"""toppings that belong to specific types of pizzas"""
pizza = models.ForeignKey(Pizza, on_delete=models.CASCADE)
name = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""Return a string representation of the model."""
return self.name
我按照本书本章中的练习创建了一个Django项目,该项目允许我创建有关特定主题的日志条目。这个期刊项目中的代码工作得很好&我已经或多或少地将这个练习中的代码复制到我的比萨店项目中。我所做的唯一重大改变是,我想按名称而不是按项目中添加到Django数据库的日期对浇头进行排序
与我的非常相似,但没有解决我的问题
如果我有什么可以帮助您排除故障,请告诉我。由于模型是Topping,而您没有为提供值,因此您可以使用Topping\u集访问Toppings:
由于模型是浇头,并且您没有为提供值,因此可以使用“浇头”设置访问浇头:
旁注:有一个原因,他们使用比萨饼和配料来解释与许多关系相关的各种细节:旁注:有一个原因,他们使用比萨饼和配料来解释与许多关系相关的各种细节:非常感谢。由于我是Django的新手,我假设entry_set是方法/查询的正确名称。我从未考虑过我的类的名称可以/将被合并到方法/查询的名称中。现在开始更多的调试,谢谢@罗伯特布朗:没有entry类的entry_集的问题是,如果你有多个foreignkey到Pizza,那么查询所指的内容就不明确了。谢谢!由于我是Django的新手,我假设entry_set是方法/查询的正确名称。我从未考虑过我的类的名称可以/将被合并到方法/查询的名称中。现在开始更多的调试,谢谢@罗伯特布朗:没有entry类的entry_集的问题是,如果你有多个foreignkey到Pizza,那么查询所指的内容就不明确了。
def pizza(request,pizza_id):
pizza = Pizza.objects.get(id=pizza_id)
toppings = pizza.topping_set.order_by('name')
context = {'pizza': pizza, 'toppings': toppings}
return render(request, 'pizzeria/pizza.html', context)