这就是我想要做的事情:我需要将一些模型迁移到另一个数据库来修改它的一些属性。我附带的方法是在名为' production'的我的DATABASES设置中设置了另一个数据库设置。 然后我这样做:
for cat_to, cat_from in category_names.items():
c_f = InRadarCategory.objects.get(name=cat_from)
c_t = InRadarCategory.objects.get(name=cat_to)
for ad in InRadarAd.objects.filter(category=c_f):
ad.pk = None
ad.category = InRadarCategory.objects.using('production').get(name=c_t.name)
ad.save(using='production')
请注意,在将其保存到其他数据库之前,我使用另一个数据库中的对象修改它的category属性。之后,我尝试通过调用保存在ad
实例上,但使用生产数据库来推送它。
这给了我错误:
instance is on database "default", value is on database "production"
Django docs here表示:
Django目前不提供跨越多个数据库的外键或多对多关系的任何支持。如果您使用路由器将模型分区到不同的数据库,那么由这些模型定义的任何外键和多对多关系必须是单个数据库的内部。
问题是:我是否走在正确的道路上,却错过了一些愚蠢的事情?是否有其他方法可以实现这一目标?