【问题标题】:Can't get django-star-ratings to display to template无法让 django-star-ratings 显示到模板
【发布时间】:2017-06-27 00:30:20
【问题描述】:

刚接触 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' 错误。任何帮助表示赞赏,我正处于拉头发阶段

【问题讨论】:

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


    【解决方案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_listRate 模型对象的列表:

    {% ratings object_list %}
    

    这是显示/迭代数据的错误方法。

    您在模板中实际需要的是:

    {% for item in object_list %}
    
        {{ item.name }} and {{ item.ratings }}
    
    {% endfor %}
    

    【讨论】:

    • 感谢您的回复!奇怪的是,django-star-ratings 的文档说“要为模型启用评级,请在模板中添加以下标签:{% load rating %} ... {% rating object %} ... ' ,所以我猜他们已经创建了一个用于将其传递给模板或其他东西的函数。我确实按照您对 jinja 的建议进行了尝试,但没有运气。
    • @CrambleDrap 你能通过我的回答解决 'str' object has no attribute 'meta' 的问题吗??
    • @CrambleDrap 你把 {% rating object %} 误认为是两个不同的东西,它实际上意味着只是一个评级模型的对象。
    • @CrambleDrap 你可以使用 {{ object_list }} 在模板中打印。
    • 哦,是的,当我使用 for 循环时,模板能够加载,只是没有显示任何内容。我通过管理员向模型添加了一些对象,并且在其他地方看到空的星级评分会显示在我的对象列表旁边。通过查看文档,我假设在我的情况下我只是输入了 {% rating object_list %} ,因为那是我在视图中分配的上下文。但是,如果我在某个地方完全误解了某些东西,我不会感到惊讶
    猜你喜欢
    • 1970-01-01
    • 2020-08-21
    • 2017-05-31
    • 1970-01-01
    • 2021-10-24
    • 2018-05-21
    • 2012-05-15
    • 2020-09-28
    • 2021-02-14
    相关资源
    最近更新 更多