Django模型设置外键到另一个模型的字段
问题描述:
有什么办法可以将django中的外键设置为另一个模型的字段?Django模型设置外键到另一个模型的字段
例如,假设我有一个ValidationRule对象。我想要规则来定义在另一个模型中的哪个字段要被验证(以及其他一些信息,例如它是否可以为空,数据类型,范围等)。
有没有办法在django中存储这个字段级映射?
答
是的,没有。 FK关系在类级别进行描述,并在数据库中映射FK关联,因此您无法直接在FK参数中添加额外信息。
相反,我建议具有保持在其他表中的字段名的字符串:
class ValidationRule(models.Model):
other = models.ForeignKey(OtherModel)
other_field = models.CharField(max_length=256)
这样,您就可以获取与现场:
v = ValidationRule.objects.get(id=1)
field = getattr(v, v.other_field)
注意,如果您使用的是多对多字段(而不是一对多),但内置支持可通过through选项创建用于保存元数据的自定义中介表。
答
我没有试过,但似乎因为Django的1.0,你可以这样做:
此class Foo(models.Model):
foo = models.ForeignKey(Bar, to_field='bar')
文档是here。
+1 - 很好找! – 2012-06-07 18:30:20
请再次阅读该问题。 – ultrajohn 2012-09-03 12:11:53
正是我在找的东西。我希望这也意味着我可以做'foo.foo_bar = value_bar'。无需查询Bar – 2017-07-04 12:23:28