我有一个模型客户端,需要在VALUES()
中获取注册地址class Client(models.Model)
addresses = generic.GenericRelation(Addres, null=True, blank=True )
name =models.CharField(max_length=50)
tel =models.CharField(max_length=20)
...
def get_addres(self):
''' Returns registration addres
'''
我想做这样的事情
list = Client.objects.all().values( 'name', 'tel', 'get_addres')
请告诉我如何解决这个问题?
答案 0 :(得分:3)
你不能用django的ORM来查询python值(它对数据库说SQL,而不是django模型)。
您可以使用SQL extra
上的QuerySet
方法收集额外信息。
https://docs.djangoproject.com/en/dev/ref/models/querysets/#extra
在尝试使用SQL之前,我更愿意尝试在Python中构建它。除非您使用values()
的原因是专门解决实际的内存问题,否则我只需使用python生成所需的数据。
list = [{'name': x.name, 'tel': x.tel, 'address': x.get_address()}
for x in Client.objects.all()]