我正面临着django的一个大问题。
我正在尝试保存包含foreignKeys
和'ManyToMany`的对象,但我总是收到此错误
ProgrammingError: column [columnName] does not exist
我已经做过几次所有迁移,但它不起作用。当我使用不包含外键的模型时,我没有问题。我试图删除迁移文件夹。我的数据库似乎不想更新字段。我需要强制它创建这些列,但我不知道。
class Post(models.Model):
post_id = models.CharField(max_length=100,default="")
title = models.CharField(max_length=100,default="")
content = models.TextField(default="")
author = models.ForeignKey(Users, default=None, on_delete=models.CASCADE)
comments = models.ManyToManyField(Replies)
numberComments = models.IntegerField(default=0)
date = models.DateTimeField(default=timezone.now)
updated = models.DateTimeField(null=True)
def __str__(self):
return self.post_id
当我试图检索这个时,我有:
ProgrammingError: column numberComments does not exist
正如我在提出makemigrations
和migrate
之前所说,我甚至删除了迁移文件夹。
有什么想法吗?
答案 0 :(得分:-1)
要使用外键保存POST模型的实例,您需要插入查询对象。 代码示例:
user = Users.objects.get(pk = 1)
p = POST(
title = 'Hello',
...
author = user,
date = '2018-01-01'
)
p.save()
您不需要创建post_id列,django会自动为您创建一个,您可以使用.pk或.id访问它 你既不需要numberComments。你应该从评论中计算出多对多的关系。嗯......你也可以在DB上使用它。
接下来,您无法在创建时添加多对多关系。如上所述首先创建帖子。然后查询要添加的注释,将对象添加到关系
r = Replies.objects.get(pk = 1)
p.comments.add(r)
希望有所帮助