有没有办法获得我的密钥所涉及的模型的外键类型?目前,我正在尝试这样的事情:
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>>
任何帮助将不胜感激。
答案 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