我希望我的 django 应用程序提供任何模型字段的列表(这将有助于 GUI 自行构建)。
Steps
想象一下课程(忽略所有领域都可能在的事实Item
,我有我的理由:-))
class Item(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
class Steps(models.Model):
item = models.OneToOneField('Item', related_name='steps')
design = models.BooleanField(default=False)
prototype = models.BooleanField(default=False)
production = models.BooleanField(default=False)
现在,当我想列出模型的字段时:
def get_fields(model):
return model._meta.fields + model._meta.many_to_many
但我也想获得我的模型的“相关”一对一外键列表。就我而言Item.steps
,不会在该列表中。
我发现model._meta.get_all_field_names
确实包括所有相关领域。
但是当我调用Item._meta.get_field_by_name('steps')
它时,它会返回一个包含 a 的元组RelatedObject
,它不会立即告诉我这是单个关系还是一对多(我只想列出反向的一对一关系)。
另外,我可以使用这段代码:
from django.db.models.fields.related import SingleRelatedObjectDescriptor
reversed_f_keys = [attr for attr in Item.__dict__.values() \
if isinstance(attr, SingleRelatedObjectDescriptor)]
但我对此不是很满意。
欢迎任何帮助,想法,提示!
干杯