我成功地为我的项目实施了django-contrib-comments,并开始逐步调整它,使其 100% 适合我的项目。现在我有以下我无法解决的问题:
我有一个模型Poller
,它为模型中存储的任何用户提供两个可能的投票Vote
。现在,如果用户对轮询器发表评论,我想将他对该特定轮询器的个人投票返回给模板中呈现的评论。
由于我不想以任何方式触及第 3 方的架构,因此我更愿意在我看来获得所需的查询集。
django-contrib-comments 包的评论模型
class CommentAbstractModel(BaseCommentAbstractModel):
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user'),
[..]
我的投票器、投票和帐户/用户模型
class Poller(models.Model):
poller_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_on = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(Account, on_delete=models.CASCADE)
[..]
class Vote(models.Model):
poller = models.ForeignKey(Poller, on_delete=models.CASCADE, related_name='vote')
user = models.ForeignKey(Account, on_delete=models.CASCADE)
created_on = models.DateTimeField(auto_now_add=True)
poller_choice_one_vote = models.BooleanField(default=False)
poller_choice_two_vote = models.BooleanField(default=False)
[..]
class Account(AbstractBaseUser):
username = models.CharField(max_length=40, unique=True)
[..]
长话短说,我如何访问每个发表评论的用户的投票模型以确定他选择了哪一票?也许通过子类化CommentAbstractModel
并向模型添加外键Vote
?
@require_GET
def single_poller(request, poller_id):
"""
renders a specific poller with prepopulated meta according to previous
user interaction, e.g. votes and likes
"""
# Retrieve the item via get
poller = Poller.objects.get(poller_id=poller_id)
[..] # how to go on here?