无法获得django-star-ratings以显示模板

时间:2017-02-09 05:52:13

标签: 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

在观点中,

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'错误。感谢任何帮助,我在拔毛阶段

1 个答案:

答案 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 %}