目前,我正在尝试动态确定ForeignKey背后的模型。例如,我有:
class Calendar(models.Model):
date = models.DateField()
shift= models.ForeignKey(Workshift, on_delete=models.CASCADE, null=True, blank=True)
class Workshift(models.Model):
shift = models.CharField(max_length=20)
现在,我想做一些类似Calendar._meta.get_foreign_key_models()的事情(原因不存在),并接收工作班次模型。我已经尝试过model._meta.get_fields()方法,但这只告诉我,该移位是一个ForeignKey,而不是其背后的模型。 这有可能吗?
答案 0 :(得分:1)
字段本身具有属性related_model
,因此,如果您获取字段,请检查哪些字段是RelatedField
的实例,则可以获取related_model
:
from django.db.models.fields.related import RelatedField
related_models = [field.related_model for field in Calendar._meta.get_fields() if isinstance(field, RelatedField)]
答案 1 :(得分:0)
现在您知道外键字段名称为shift,可通过以下方式获取它的related_model:
Calendar._meta.get_field('shift').related_model