gpt4 book ai didi

python - Django Twitter 克隆。如何限制用户多次点赞一条推文?

转载 作者:太空宇宙 更新时间:2023-11-03 16:09:12 26 4
gpt4 key购买 nike

我不知道从哪里开始。现在,用户可以按自己想要的次数按“喜欢”,它只会将该推文的“喜欢”总数相加。

模型.py

class Howl(models.Model):
author = models.ForeignKey(User, null=True)
content = models.CharField(max_length=150)
published_date = models.DateTimeField(default=timezone.now)
like_count = models.IntegerField(default=0)
rehowl_count = models.IntegerField(default=0)

def get_absolute_url(self):
return reverse('howl:index')

def __str__(self):
return self.content

View .py

class HowlLike(UpdateView):
model = Howl
fields = []

def form_valid(self, form):
instance = form.save(commit=False)
instance.like_count += 1
instance.save()

return redirect('howl:index')

Django Twitter 克隆。如何限制用户多次点赞一条推文?

最佳答案

除了跟踪某个帖子有多少个喜欢之外,您可能还想跟踪谁“喜欢”了每个帖子。您可以通过使用 UserHowl 上的唯一键创建一个连接表 Likes 来解决这两个问题。

唯一的 key 将防止任何用户进行重复的点赞。

您可以在 Django 中使用 ManyToManyField 来执行此操作,请注意,由于这意味着向 Howl 添加第二个 User 关系,因此我们需要通过提供 lated_name

来消除关系的歧义

例如:

class Howl(models.Model):
author = models.ForeignKey(User, null=True, related_name='howls_authored')
liked_by = models.ManyToManyField(User, through='Like')

# ...rest of class as above


class Like(models.Model):
user = models.ForeignKey(User)
howl = models.ForeignKey(Howl)

class Meta:
unique_together = (('user', 'howl'))

like_count 计数就变得多余了,因为您可以使用 Howl.liked_by.count() 代替。

这样做的另一个好处是,它允许您存储有关点赞的信息 - 例如添加时间。

关于python - Django Twitter 克隆。如何限制用户多次点赞一条推文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39432191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com