我有一个包含多个 Django“应用程序”的 Django 项目。其中之一具有表示来自外部源的数据的模型(我不控制此数据)。
我希望我的其他应用程序能够引用这个“外部应用程序”,但我想避免数据库完整性检查的所有模糊。我不希望数据库对这些“软外键”有任何限制。
你知道我如何编写一个自定义字段来模拟真正的 Django ForeignKey 而不会在数据库上创建硬约束吗?
也许这已经存在,但我在 Google 上没有任何运气。
在此先感谢您的帮助:-)
注意:我知道 generic relations具有 content_types 的系统。但我不想要一般关系。我只希望特定关系与已识别模型没有严格的完整性约束。
编辑:
我找到了相关链接:
- Django ForeignKey which does not require referential integrity?
- Understanding / mySQL aka tricking ForeignKey relationships in Django
但是我没有找到我的问题的正确答案。 :(
2012 年编辑,6 月 4 日:
我已经深入研究了 django 的代码以找到需要做的事情,但我认为仅仅子类化 ForeignKey 是不够的。你能给我一些关于如何做到这一点的指导吗?
注意:我使用 South 来管理我的数据库架构,所以我认为我也需要为此做些事情。但它可能超出了这里的主题:)
最佳答案
如果您只想禁用字段上的 ForeignKey 约束检查,则只需将 db_constraint=False
添加到该字段即可。
user = models.ForeignKey('User', db_constraint=False)
另见: Django - How to prevent database foreign key constraint creation
关于database - Django : "Soft" ForeignField without database integrity checks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623854/