我的模特有标准" id"字段,我想在使用_meta.get_fields()时将其排除。我目前的解决方案看起来像这样:
context_var = (MyModel._meta.get_fields())[1:]
它运作良好,但我不太喜欢切片解决方案。我宁愿按名称删除id字段,也不要使用明确排除id字段的方法。有更优雅的解决方案吗?
答案 0 :(得分:2)
你可以这样做:
context_var = [f for f in MyModel._meta.get_fields() if f.name != 'id']
答案 1 :(得分:0)
或者,您可以使用Python内置的filter()
函数:
In [1]: context_var = filter(lambda x: x.name != 'id', MyModel._meta.fields)
In [2]: type(context_var)
Out[2]: filter
In [3]: for item in context_var: print(item)
MyModel.field1
MyModel.field2
...
结果值的类型为filter
,您可以对其进行迭代,但是根据以后需要对context_var
进行的操作,您可能希望将其转换为元组:
In [4]: context_var = tuple(filter(lambda x: x.name != 'id', MyModel._meta.fields))