我的模型目前定义如下:
class Category(models.Model):
ID = models.AutoField()
name = models.CharField()
desc = models.CharField()
另一个模型Subcategory
在ForeignKey
上定义了Category
。
当我跑步时:
Category._meta.get_fields()
我明白了:
(<ManyToOneRel: siteapp.subcategory>, <django.db.models.fields.AutoField: ID>, <django.db.models.fields.CharField: name>, <django.db.models.fields.CharField: desc>)
但是,我不想要ManyToOneRel
字段;我只想要其他人。
目前,我正在做这样的事情:
from django.db.models.fields.reverse_related import ManyToOneRel
field_list = []
for field in modelClass._meta.get_fields():
if not isinstance(field, ManyToOneRel):
field_list.append(field)
但是,使用或不使用模型_meta
API有更好的方法吗?
答案 0 :(得分:1)
您可以使用concrete_fields
属性。
Category._meta.concrete_fields
然而,这是一个内部Django API,使用get_fields()
和你自己的过滤可能会更好,即使它可能更冗长一点。