python - 无法让 django-star-ratings 显示到模板

标签 python django django-models django-templates django-queryset

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_listRate 模型对象的列表:

{% 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/

相关文章:

python - VS Code - 在模块模式下为 console_script 运行调试配置

python - 预填充表单数据 Django

python - 将嵌套字典转换为列表

Django:返回 values_list 的字典列表?

python - Django unique_together 并将对象标记为 "deleted"

python - "504 Gateway Timeout"执行 python cgi 脚本时

python - 在 csv 文件中添加填充以使数据框可供 pandas 读取

python - 如何在我正在绘制的每个子图中添加垂直线?

python - 在本地 WiFi 网络上服务 Django 项目

Django迁移: Can't create table errno: 150