Django的新手,感觉我已经接近弄清楚我在哪里出错了。我一直试图将上下文传递给我的模板无济于事。我有模特:
class Rate(models.Model):
name = models.CharField(max_length = 140)
ratings = GenericRelation(Rating, related_query_name= 'object_list')
def __str__(self):
return self.id
在观点中,
def RateList(request):
queryset = Rate.objects.filter(ratings__isnull=False).order_by('ratings__average')
context= {
"object_list": queryset,
"title": "List"
}
return render(request, 'UploadApp/upload.html', context)
最后,在我的模板中,我根据文档将{% ratings object_list %}
放入HTML中。不确定我是否只是忽略了一些小细节,但是当我尝试加载页面时,我收到'str' object has no attribute 'meta'
错误。感谢任何帮助,我在拔毛阶段
答案 0 :(得分:1)
在方法 __ str __ 中,您将返回 self.id ,但模型中没有名为 id 的字段, 所以更新你的代码:
class Rate(models.Model):
name = models.CharField(max_length = 140)
ratings = GenericRelation(Rating, related_query_name= 'object_list')
def __str__(self):
return self.name
还有一件事,您在上下文中传递的 object_list 是 Rate 模型对象的列表:
{% ratings object_list %}
这是显示/迭代数据的错误方法。
模板中实际需要的是:
{% for item in object_list %}
{{ item.name }} and {{ item.ratings }}
{% endfor %}