我试图从Django中的字符串过滤器中获取字段对象。
例如,
Sale.objects.filter(product__category__name='shoes')
给定模型Sale
和字符串"product__category__name"
,是否可以获取Category.name
的字段对象? (或者更具体地说,该字段的verbose_name
。)
更新
这是我最终提出的
from django.db.models.fields import FieldDoesNotExist
def find_field(model, lookup):
lookups = list(reversed(lookup.split("__")))
field = None
while model and lookups:
current = lookups.pop()
field = model._meta.get_field(current)
model = field.related_model
if lookups and model is None:
raise FieldDoesNotExist(lookup)
return field
答案 0 :(得分:1)
你可以尝试这些方面的东西
ASSIGN
这将返回名称
如果你有多个应用程序,这可能会变得更难,因为你也需要知道应用程序名称,但也许这可以作为参数传递。
答案 1 :(得分:0)
要获取verbose_name,您应致电object._meta.get_field('field').verbose_name
category._meta.get_field('name').verbose_name