Python Django:从相关管理器获取单个元素

Python Django:从相关管理器获取单个元素,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我有一个应用程序,用户可以在“帖子”上“投票”。在UI(模板)中,我想指出用户是否已经投票。这需要做类似的事情(这不起作用)。是否有合法的方法在模板中执行此操作(无需重新编写视图) 我正在尝试让所有对帖子投票的用户都参与进来。这显然不起作用,也没有真正意义,但希望它能传达我想要实现的目标: {% if user in post.post_votes.all.the_user %} 模型的相关部分: class Post(models.Model): content = models.T

我有一个应用程序,用户可以在“帖子”上“投票”。在UI(模板)中,我想指出用户是否已经投票。这需要做类似的事情(这不起作用)。是否有合法的方法在模板中执行此操作(无需重新编写视图)

我正在尝试让所有对帖子投票的用户都参与进来。这显然不起作用,也没有真正意义,但希望它能传达我想要实现的目标:

{% if user in post.post_votes.all.the_user %}
模型的相关部分:

class Post(models.Model):
    content = models.TextField(blank=False)

class Vote(models.Model):
    the_user = models.ForeignKey(User, related_name="post_votes")
    the_post = models.ForeignKey("Post", related_name="post_votes")

谢谢

您需要将用户传递到queryset筛选器。但使用内置模板语法无法做到这一点。所以你应该

#app.templatetags.app#u标签
从django导入模板
register=template.Library()
@寄存器过滤器
def已投票(用户、帖子):
return post.voces.filter(用户=user.exists)()
#模板
{%load app_tags%}
{%if用户|已投票:post%}
已经投票
{%endif%}

或者,你可以循环查询一组投票,但这不是一个好主意

您需要将用户传递到queryset筛选器。但使用内置模板语法无法做到这一点。所以你应该

#app.templatetags.app#u标签
从django导入模板
register=template.Library()
@寄存器过滤器
def已投票(用户、帖子):
return post.voces.filter(用户=user.exists)()
#模板
{%load app_tags%}
{%if用户|已投票:post%}
已经投票
{%endif%}

或者,你可以循环查询一组投票,但这不是一个好主意

投票
的字段中
用户
相关名称
定义为
投票后
。我首先要尝试的是修复这个模板(您使用了
post.vots….
而不是
post.post\u vots….

至于主要问题,我将在
Post
实体中构建一个方法来返回所有选民-类似于:

@property
def voters(self):
    votes = self.post_votes.all()
    return set([vote.the_user for vote in votes])

在这之后,我可以简单地在模板中使用:
{%if user in post.voters%}

投票
的字段中
用户
相关的名称
被定义为
投票
。我首先要尝试的是修复这个模板(在这里,您使用了
post.vots…
而不是
post.post\u vots…

至于主要问题,我将在
Post
实体中构建一个方法来返回所有选民-类似于:

@property
def voters(self):
    votes = self.post_votes.all()
    return set([vote.the_user for vote in votes])

在这之后,我可以简单地使用:
{%if user in post.voctors%}
in template.

这个答案的光辉像一千个太阳一样闪耀。谢谢!!这永远是一种快乐:)这个答案的光辉像一千个太阳一样闪耀。谢谢!!这永远是一种快乐:)