假设我们知道一个引用另一个的已知任意模型上存在ForeignKey字段,我们如何找到这种关系的名称?
我正在寻找类似的东西:
Spam.field_relating_to(Egg)
会返回u'egg'
,其中Spam
看起来像这样:
from django.db import models
class Spam(models.Model)
egg = models.ForeignKey(Egg)
这可能吗?
答案 0 :(得分:4)
在Spam._meta.fields中查找具有rel.to Egg
的第一个字段答案 1 :(得分:2)
要跟进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)
应该有用。
请注意,这可能与一对一和多对多关系相匹配,因此,如果检查您很重要,则必须稍微更改代码。
Haven没有测试过,所以请仔细检查。