Django ManyToMany 通过不同步或迁移
Posted
技术标签:
【中文标题】Django ManyToMany 通过不同步或迁移【英文标题】:Django ManyToMany Through not syncing or migrating 【发布时间】:2012-10-06 16:55:21 【问题描述】:我有这个模型(为简洁起见,此处截断):
class Meal(models.Model):
host = models.ForeignKey(User, related_name="cooking")
cost = models.IntegerField(default=1)
summary = models.CharField(max_length=1024, default="A good dinner")
diners = models.ManyToManyField(User, through='Attendance',
related_name="diners", blank=True)
当我同步它时,diners 字段被完全忽略。它没有出现在数据库中,运行syncdb时也没有错误。就好像它不存在一样。用户和出勤表都很好。
我在尝试使用 South 添加此字段时发现了这个问题,所以我也尝试了它作为替代方法。
有什么想法吗? 谢谢
【问题讨论】:
【参考方案1】:在添加 diners 字段之前,您是否已经运行了 syncdb fyrir Meal?
因为 syncdb 不会改变现有表,您可以在此处阅读:
Django docs
旁注 - 我个人没有使用过 south,但我在开发时使用过 Django evolution。
编辑:
看了你的评论,我想我知道问题出在哪里了。
当 through 与 ManyToManyField 一起使用时,Django 不会向该表添加字段,所有必要的信息都在 attendance 表中。
【讨论】:
不,我首先使用南迁移,这有助于数据库更改。然后我废弃了整个数据库进行调试并重新运行了syncdb。不过还是谢谢。 我认为可能是这种情况,但这似乎很奇怪,我在文档中没有注意到这一点。我非常希望这是一个非规范化的字段,我可以简单地检查它的计数。我想我会在出勤或其他方面做一个模型经理。不过谢谢!以上是关于Django ManyToMany 通过不同步或迁移的主要内容,如果未能解决你的问题,请参考以下文章
通过特定的 ManyToMany 对象订购 Django QuerySet
django 模型:如何克服“通过”ManyToMany 选项限制