假设我们知道ForeignKey字段存在于一个引用另一个的已知任意模型中,我们如何找到这个关系的名称?如何在django中从一个模型到另一个模型获取ForeignKey关系的名称?
我要寻找类似:
Spam.field_relating_to(Egg)
,将返回u'egg'
其中Spam
看起来是这样的:
这可能吗?
假设我们知道ForeignKey字段存在于一个引用另一个的已知任意模型中,我们如何找到这个关系的名称?如何在django中从一个模型到另一个模型获取ForeignKey关系的名称?
我要寻找类似:
Spam.field_relating_to(Egg)
,将返回u'egg'
其中Spam
看起来是这样的:
这可能吗?
要跟进Max Peterson's answer,这里是代码,你可以使用:
class RelationshipMixin(object):
def field_relating_to(other):
for field in self._meta.fields:
if hasattr(field, 'rel') and field.rel.to == other:
return field.name
return None
class Spam(models.Model, RelationshipMixin):
egg = models.ForeignKey(Egg)
然后
>>> Spam.field_relating_to(Egg)
应该工作。
请注意,这可能会匹配一对一和多对多的关系,所以如果检查这一点很重要,您将不得不稍微更改一些代码。
没有测试过,所以仔细检查。
查找Spam._meta.fields第一场具有rel.to蛋