与此作者类似的帖子模型已经存在



我想做的基本上是用户可以喜欢一篇文章一次。但是这个错误使我不喜欢另一篇文章。这是我的代码:

class LikePostModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
author = models.ForeignKey(User, unique=True, on_delete=models.CASCADE,related_name='postlikes',null=True)
article = models.ForeignKey(Article,  on_delete=models.CASCADE,related_name='postlikes_set')
created = models.DateTimeField(auto_now_add=True)

这是我的错误:

Like post model with this Author already exists

我该如何解决这个问题?

您将author标记为唯一。这意味着每个作者最多只能有一个LikePostModel,这可能不是你想要的。你可能想让它在每篇文章中每个作者都是独一无二的。您可以使用UniqueConstraint[Django-doc]:

from django.conf import settings
class LikePostModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
#notunique=True
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name='postlikes'
)
#notunique=True
article = models.ForeignKey(
Article,
on_delete=models.CASCADE,
related_name='postlikes_set'
)
created = models.DateTimeField(auto_now_add=True)
class Meta:
# make thecombinationunique
constraints= [
models.UniqueConstraint(fields=['author', 'article'], name='unique_like')
]

最新更新