我有两个相互通信的 Django 项目。第一个包含 modelA并且B有一个ForeignKeyto A。第一个项目发送和接收B来自第二个项目的序列化对象。我希望第二个项目只包含该内容B,但它需要该内容的价值ForeignKey。这些模型定义如下:
class A(models.Model):
...
class B(models.Model):
fk = models.ForeignKey(to='A', on_delete=models.PROTECT)
...
Run Code Online (Sandbox Code Playgroud)
问题是ForeignKey模型需要在第二个项目A中定义B模型。A它的对象也必须存在,以便数据库一致并且不存在问题,例如在管理面板中。
最后,我想在第一个项目中将该fk字段视为成熟的字段ForeignKey,在第二个项目中将该字段视为某种只读通用标识符。具体来说,我需要保留第一个项目中双向查询的功能,例如fk__some_a_field和b_set。我希望两个项目中的模型具有相同的代码库,以确保两个项目中的数据库保持同步。我怎样才能以干净的方式实现这一目标?
编辑:我也在考虑fk = CustomField(...)哪个或多或少被定义为
if IS_FIRST_PROJECT:
CustomField = ForeignKey
else:
CustomField = IntegerField
Run Code Online (Sandbox Code Playgroud)
但问题是我需要一种干净的方法来选择与默认外键完全匹配的整数字段类型。另外,我不确定这样的解决方案是否会带来意想不到的问题。