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
在 View 中,
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'
错误。感谢任何帮助,我正处于拔毛阶段
最佳答案
在方法 __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 %}
关于python - 无法让 django-star-ratings 显示到模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42129218/