如何通过Queryset在Python函数中访问Django模型实例的“ absolute_url”

时间:2019-04-01 14:38:05

标签: django

如何在views.py中的python函数中,通过定义的方法-get_absolute_url通过Django ORM Queryset访问值/字符串。

 def get_absolute_url(self):
    """Returns the url to access a particular instance of the model."""
    return reverse('model-detail-view', args=[str(self.id)])
上面的

代码是Mozilla开发人员网络的示例。对于以下提到的Queryset中的模型的每个实例,如何访问-model-detail-view

我下面的代码没有给出任何结果,而是ERROR ==

queryset = myModel.objects.get_absolute_url()

AttributeError:“管理器”对象没有属性“ get_absolute_url”

再次尝试使用reverse方法的返回值也会失败,并出现类似的AttributeError。

queryset = myModel.objects.model-detail-view()

AttributeError:“ Manager”对象没有属性“ model-detail-view”

想要获取个人“模型详细视图”字符串,并将其作为python DF的一部分传递给dataTable.js,并进一步作为JSON传递。

2 个答案:

答案 0 :(得分:1)

myModel.objectsManager,而不是该模型类的实例。您需要先获得一个实例,例如:

instance = myModel.objects.get(pk=1)
instance.get_absolute_url()

如果您希望整个查询集都具有此结果,则可以使用:

urls = [obj.get_absolute_url() for obj in myModel.objects.all()]

这只是一个起点。您可能需要对上述内容进行分页,否则它将是非常昂贵的查询。如果您希望以更强大的方式使用Django Rest Framework serializers,则可以考虑。

答案 1 :(得分:0)

再次感谢@nimasmi,我现在可以访问我的模型实例的绝对URL,如此处所示,主键经过硬编码以测试您的代码==