如何解决在已经存在的ManyToMany中实施“通过”
我正在处理这种复杂的情况,但我不确定如何进行。
上下文:
我有这种情况:
x,y,z = vectorized_normed_right
p_i_right = [fu * (x / z) + cu,fv * (y / z ) + cv]
这种关系是传统的关系,生产中已经有数据。
问题:
出现了新的限制,其中class Cat(models.Model):
treats = models.ManyToManyFields(Treat)
class Treat(models.Model):
name = models.CharField()
模型必须移至新的数据库。
简而言之,这意味着我必须将对待与猫的约束与猫分开。
提案:
有人告诉我,鉴于我的情况,我别无选择,只能实现一个自定义的中间模型以保留m2m,但也允许使用Treat
。这个建议是这样的:
db_constraint=False
在我的本地堆栈中,运行迁移后,我发现自己无法访问数据。
class Cat(models.Model):
treats = models.ManyToManyFields(Treat,through=CatTreat,related_name="cats")
class Treat(models.Model):
name = models.CharField()
class CatTreat(models.Model):
cat = models.ForeignKey(Cat)
treat = models.ForeignKey(Treat,db_constraint=False)
我不确定新的直通访问是否配置正确,或者是否无意中删除了数据。感谢您提供任何见识。
解决方法
事实证明还需要更多配置。
在穿透表中,这不存在:
class CatTreat(models.Model):
cat = models.ForeignKey(Cat)
treat = models.ForeignKey(Treat,db_constraint=False)
class Meta:
db_column = "table_name"
cat.treats.all()
# => [...]
就是这样!为了避免丢失任何数据,我不得不将迁移工作视为伪造。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。