在Django中添加ManyToMany关系;没有此列错误
我正在尝试在用Django制作的Twitter克隆应用中添加功能(我对Django还不太熟悉),但是我无法把新对象添加到我的“关注”列表,因为我收到的错误是“没有这样的列:twitterclone_userpro_following.otherprofile_id”。在Django的ManyToMany信息页面上,看起来只需要使用add命令就能很简单地实现。以下是我正在使用的两个类和我尝试用来添加的代码:
class OtherProfile(models.Model):
username = models.CharField(max_length=30)
def get_username(self):
return username
class UserPro(models.Model):
username = models.CharField(max_length=30)
following = models.ManyToManyField(OtherProfile)
接下来是我尝试用来添加到关注列的代码:
me = UserPro.objects.get(username="newuser1")
himher = OtherProfile.objects.get(username="newuser2")
me.following.add(himher)
我不太明白网上大多数答案给出的建议,涉及到使用South,我觉得应该有更简单的方法,因为Many-To-Many的文档中并没有提到这个。
1 个回答
1
这是一个大家都知道的Django问题。如果你创建了模型,运行了 syncdb
,然后在某个模型上添加了 ManyToManyField
,那么再次运行 syncdb
是没有用的——它不会识别并应用你模型的变化,看看这里:
最好的办法是开始使用 South——它可以跟踪你的模型变化,并通过模式和数据迁移机制来应用这些变化。值得一试。
顺便说一下,你也可以手动创建那个必要的多对多表。
希望这些信息对你有帮助。