Django:获取外键类型

时间:2009-12-18 19:12:04

标签: django django-models foreign-keys foreign-key-relationship

有没有办法获得我的密钥所涉及的模型的外键类型?目前,我正在尝试这样的事情:

def __init__(self, *args, **kwargs):
        super(JobOrderSupplementForm, self).__init__(*args, **kwargs)
        for field in self.fields:
            if type(self.fields[field]) == TypedChoiceField:
                fieldOption = <Whatever type key points to>.get(id=self.__dict__['initial'][field])
                if not fieldOption.isActive:
                    ...Do something to the choices...


我正在尝试以编程方式设置将在我的表单中显示的可用选项。到目前为止,我只能弄清楚下面的这个片段让我与外键对象有某种关系......

self.fields[field].__dict__['coerce']
>>> <bound method ForeignKey.to_python of <django.db.models.fields.related.ForeignKey object at 0x01609EF0>>


任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

想出来......这是dir和type的一个非常复杂和繁琐的过程,但是,这一行将为我提供外键与之相关的Model类型:

    getattr(type(self.instance), field).field.rel.to

答案 1 :(得分:1)

也许你应该调查generic relations

答案 2 :(得分:0)

针对Django 2.2进行了更新,其中field.rel.to对象路径不再显示,可以解决,

 getattr(type(self.instance), field).field.related_model