在Django中添加ManyToMany关系;没有此列错误

2 投票
1 回答
1000 浏览
提问于 2025-04-17 21:44

我正在尝试在用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——它可以跟踪你的模型变化,并通过模式和数据迁移机制来应用这些变化。值得一试。

顺便说一下,你也可以手动创建那个必要的多对多表。

希望这些信息对你有帮助。

撰写回答