django:将所有列作为列表

时间:2016-05-19 23:09:52

标签: django

这可能很简单,但我无法弄清楚如何去做。

我希望将某些行中的所有列作为列表。我知道我可以 使用values_list和flat = True并列出所有列,但就是这样 唯一的方法?

我想做这样的事情:

rows = FOO.objects.filter(bar='baz')

获取列表而不是FOO对象列表。

2 个答案:

答案 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]