我负责投票系统(投票和否决)和功能-请遵循。 我希望它能做得很好,因为我没有任何人可以提供建议,所以将帖子和代码放在这里。
关注功能-它应显示有多少关注者以及他们是谁。我在这里与中间模型Follower使用了m2m关系。 我的问题-这是解决该主题的正确方法-在此处使用带有中间模型的m2m吗?
功能投票赞成和反对票-应该显示投票赞成和反对票,谁投票反对,谁投票赞成。 我的问题是,m2m与中间模型Voter之间的关系是否也可以?
关注功能代码:
class Post(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='posts')
title = models.CharField(max_length=255, unique=True)
description = models.TextField(max_length=1024)
followers = models.ManyToManyField(settings.AUTH_USER_MODEL, through='Follower', blank=True)
is_visible = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('posts:post_detail', kwargs={'pk': self.pk})
def number_of_followers(self):
return self.followers.count()
class Follower(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.user
表决和表决功能代码:
class Question(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
vote_up = models.ManyToManyField(settings.AUTH_USER_MODEL, through='Voter', blank=True)
vote_down = models.ManyToManyField(settings.AUTH_USER_MODEL, through='Voter', blank=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('qa:qa_detail', kwargs={'pk': self.id})
class Voter(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.user
现在只能使用“遵循”功能,但是我想确保我的批准程序正常。请,谢谢您的帮助。
答案 0 :(得分:0)
当前,在Question模型上没有什么可以区分up_vote和down_vote的,因此它将返回相同的查询。
作为旁注,如果您打算向其他模型添加类似的投票/跟随功能,则可能值得考虑一下这是否是通用关系的好用例。这将创建一个多态关系并且是DRY。
这是文档 generic relations