pythonDjango多个数据库提交具有外键关系的对象

2024-10-02 20:38:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在多个数据库中使用Django。我有一个'预览'数据库,接受用户上传的消息,这些必须由管理员预览和'接受',在这一点上,他们提交到'默认'生产数据库。下面的视图应该这样做,但我得到了一个错误。每个NewEntenceModel都有一个指向每个newMessageSegment的外键,每个newMessageSegment都有一个指向每条消息的外键。如果管理员接受内容,我想将每个项目移动到新数据库,然后删除预览数据库中的旧条目。请帮忙!谢谢-

错误如下:

instance is on database "preview", value is on database "default"

错误消息出现在以下行:

^{pr2}$

查看功能如下:

^{3}$

Tags: django用户视图数据库消息内容ison
1条回答
网友
1楼 · 发布于 2024-10-02 20:38:06

Django记得对象是用哪个数据库保存的,因此每个newMessageSegment仍然与preview数据库关联,直到您将其保存到default并且它正确地不允许跨数据库FK赋值。这是未经测试的,但它可以改为分配给底层的msg_id字段:

newMessageSegment.msg_id = newMessage.id

否则,您可以创建newMessageSegment的新副本,而不仅仅是创建对它的新引用。我认为您可以通过迭代msgSegment._meta.fields来实现自动化,但我可能忽略了继承或其他方面的微妙之处。任何多对多的领域都是一种痛苦。在

或者,如果你只是想破解它,编辑跟踪它的内部对象。我一般不建议这样做,但不管怎样,当你存钱的时候,它会被改变的。在

^{pr2}$

相关问题 更多 >