Python中关于Django model外键关联到第三方插件生成表的问题
我们的项目用了一些第三方的插件,会在数据库里生成一些表,例如表 A,B。我最近做的功能,自己建的表 C,表 C 里两个字段,会外键到表 A,B 的 ID。
我自己建的表 C,可以用 ORM 来在代码中建 model,然后同步到数据库里。但是表 A 和表 B,因为是插件自带的,所以代码中没有 model。所以外键不怎么好做。
这种情况下,是不是手动建表 C,不使用 orm 的方式,而是直接使用原生 sql 对表 C 进行增删改查比较合适?
或者有没有什么更好的方法?
Python中关于Django model外键关联到第三方插件生成表的问题
7 回复
你自己给表 A B 建 orm model 不就可以了
我无法理解你的问题
自己给第三方建 orm 的 model,migrate 的时候,不就会同步到数据库里面去了?这样会跟插件自己的库重复了吧? django 新手,求指教
#2 第三方的按说你也可以找到他的 model 引入的吧?
orm 是把表映射成一个对象, 就可以用操作对象的方式进行 curl. 因为 django 不知道自建的 model 在数据库中已经存在表了, 所以在加完 model 后的第一次 make migration 要加上 --fake-initial. [文档链接在这里]( https://docs.djangoproject.com/en/2.2/ref/django-admin/#cmdoption-migrate-fake-initial) ,之后就能正常 curl 了. 我也不太确定我说的对不对…
- 第三方插件有 Model 找到 Model 引用.
2. 第三方插件没有 Model 但是却会建表(一般说明不是 Django 插件). 可以自行针对表建模.
只需要在自行建模中,设置managed选项,示例如下: (更多解释请 Google)py<br>class YouModel(models.Model):<br> you_field = models.CharField(...)<br> class Meta:<br> managed = False # 说明不需要由 Django 处理建表等操作.<br><br>

