有什麼辦法可以將django中的外鍵設置爲另一個模型的字段?Django模型設置外鍵到另一個模型的字段
例如,假設我有一個ValidationRule對象。我想要規則來定義在另一個模型中的哪個字段要被驗證(以及其他一些信息,例如它是否可以爲空,數據類型,範圍等)。
有沒有辦法在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