这似乎是一个愚蠢的问题,但只是不会消失。 我的目标是制作一个简单的帖子,分享,评论,喜欢等应用程序。 大多数功能似乎在发布和评论帖子时都能正常工作。 所以我有一个名为UserPost的模型和另一个名为Comments的模型。注释模型字段有一个comment_liked_by字段,它与Django用户模型有很多关系,它基本上是存储喜欢特定注释的用户。这是我的models.py: -
class UserPost(models.Model):
post_created = models.DateTimeField(auto_now_add= True)
post_last_edit = models.DateTimeField(auto_now=True)
post_text_body = models.TextField(verbose_name='Share Yourself')
post_user_handle = models.ForeignKey(User,verbose_name='Username',default=User,on_delete=models.CASCADE)
post_share = models.BooleanField(default=True,verbose_name='Public')
#post_image = models.ImageField(blank=True,verbose_name='Add a Photo')
def __str__(self):
return (self.post_user_handle.first_name+" "+self.post_user_handle.last_name)
def get_absolute_url(self):
return reverse('feedviews')
class Meta:
verbose_name = "Latest Post"
verbose_name_plural = "Latest Posts"
ordering = ["-post_created"]
class Comments(models.Model):
comment_body = models.TextField(verbose_name="Add Comment")
comment_likes = models.IntegerField(default= 0)
comment_created = models.DateTimeField(auto_now=True)
comment_user_handle = models.OneToOneField(User,default=User,related_name='Commented_by')
comment_post = models.ForeignKey(UserPost,verbose_name='Post ID')
comment_liked_by = models.ManyToManyField(User,related_name='Like_List')
def __str__(self):
return (self.comment_user_handle.first_name+" "+self.comment_user_handle.last_name+"\n"+self.comment_body+"\n")
class Meta:
verbose_name = "Latest Comment"
verbose_name_plural = "Latest Comments"
ordering = ["-comment_created"]
在views.py中,我调用一个函数来获取post_id,comment_id和username的参数,以识别当用户喜欢评论时必须更新的评论对象。这是我的views.py: -
def LikeComment(request,username,post_id,comment_id):
user = User.objects.get(username=username)
post = UserPost.objects.get(post_user_handle=user,id=post_id)
comment = post.comments_set.get(id = comment_id)
comment.comment_liked_by.add(request.user)
comment.save()
return HttpResponseRedirect('/')
问题是每次我运行服务器并且用户点击时,将request.user添加到comment_liked_by集,我得到一个操作错误,没有这样的表名为comment_liked_by。我已经运行了makemigration并且没有问题进行迁移。我出错了吗?用户模型和多对多关系字段的onetoone关系是否发生冲突?我试图用外键实现它,但这似乎更复杂。提前谢谢。
答案 0 :(得分:0)
我无法重现你的错误,但我发现了一些奇怪的东西。 在模型注释中,字段comment_user_handle具有不正确的默认值。我建议删除它。
因为Django没有更新数据库,所以可能会这样做。
class Comments(models.Model):
comment_body = models.TextField(verbose_name="Add Comment")
comment_likes = models.IntegerField(default= 0)
comment_created = models.DateTimeField(auto_now=True)
**comment_user_handle = models.OneToOneField(User,related_name='Commented_by')**
comment_post = models.ForeignKey(UserPost,verbose_name='Post ID')
comment_liked_by = models.ManyToManyField(User,related_name='Like_List')