Django 模型将外键设置为另一个模型的字段

新手上路,请多包涵

有什么办法可以将 django 中的外键设置为另一个模型的 字段 吗?

例如,假设我有一个 ValidationRule 对象。我希望规则定义要验证另一个模型中的哪些字段(以及一些其他信息,例如它是否可以为 null、数据类型、范围等)

有没有办法在 Django 中存储这个字段级映射?

原文由 Cory 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 859
2 个回答

我没试过这个,但似乎从 Django 1.0 开始你可以这样做:

 class Foo(models.Model):
    foo = models.ForeignKey(Bar, to_field='bar')

这方面的文档在 这里

原文由 Monika Sulik 发布,翻译遵循 CC BY-SA 2.5 许可协议

是和不是。 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 选项保存元数据。

原文由 Jarret Hardie 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题