我定义了一个(最终)从models.Model
继承的User
类。我想要获取为此模型定义的所有字段的列表。例如,phone_number = CharField(max_length=20)
。基本上,我希望检索从Field
类继承的任何内容。
我以为可以通过利用inspect.getmembers(model)
来检索这些字段,但是它返回的列表不包含这些字段中的任何字段。看起来Django已经掌握了这个类,并添加了它的所有神奇属性,并去掉了实际定义的内容。所以..。如何获取这些字段?它们可能有一个函数来检索它们,用于它们自己的内部目的?
发布于 2015-06-16 17:03:11
这里提到的get_all_related_fields()
方法是deprecated in 1.8。从现在开始就是get_fields()
。
>> from django.contrib.auth.models import User
>> User._meta.get_fields()
发布于 2012-12-10 21:14:38
我发现将这个添加到django模型中非常有用:
def __iter__(self):
for field_name in self._meta.get_all_field_names():
value = getattr(self, field_name, None)
yield (field_name, value)
这允许您执行以下操作:
for field, val in object:
print field, val
发布于 2015-02-11 16:10:18
这就是问题所在。我只在Django 1.7中测试它。
your_fields = YourModel._meta.local_fields
your_field_names = [f.name for f in your_fields]
Model._meta.local_fields
不包含多对多字段。您应该使用Model._meta.local_many_to_many
获取它们。
https://stackoverflow.com/questions/3106295
复制相似问题