这可能很简单,但我无法弄清楚如何去做。
我希望将某些行中的所有列作为列表。我知道我可以 使用values_list和flat = True并列出所有列,但就是这样 唯一的方法?
我想做这样的事情:
rows = FOO.objects.filter(bar='baz')
获取列表而不是FOO对象列表。
答案 0 :(得分:1)
您可以通过这种方式获取所有字段的名称:
model._meta.get_all_field_names()
或
[field.name for field in model._meta.get_fields()] for `Django >= 1.9`
因此,您可以执行以下操作:
FOO.objects.filter(<your filter>).values_list( * FOO._meta.get_all_field_names(), flat=True)
如果您不想传递字段名称,则可以执行以下操作:
FOO.objects.values_list()
您可以在reference中看到:&#34; 如果您没有将任何值传递给values_list(),它将按照声明的顺序返回模型中的所有字段&#34;
答案 1 :(得分:0)
在django> 1.9中执行此操作的现代方法:
[f.get_attname() for f in Restaurant._meta.fields]