在Django中查找相关字段的优雅方式

时间:2013-09-26 13:40:38

标签: python django django-models django-queryset

所以我有一个Django模型的实例(“item”)以及我想要找到的字段和相关字段的列表。目前我正在这样做:

related_fields = ['customer__name', 'customer__address__postcode', 'date']
for related_field in related_fields:
    sub_item = item
    for part in related_field.split('__'):
        sub_item = getattr(sub_item, part)
    item_fields.append(sub_item)

我希望这是有道理的,但这是最有效的方式吗?当然,必须有一个Django实用程序函数可以更快地在SQL中执行此操作吗?

1 个答案:

答案 0 :(得分:1)

您可以使用QuerySet.values_list。例如:

related_fields = ['customer__name', 'customer__address__postcode', 'date']
item_fields = Item.objects.filter(pk=item).values_list(*related_fields, flat=True)[0]