Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模板-检查用户是否已经为另一个对象创建了对象_Django - Fatal编程技术网

Django模板-检查用户是否已经为另一个对象创建了对象

Django模板-检查用户是否已经为另一个对象创建了对象,django,Django,我有两个模型,分别是估价和评估。估价有许多评估(外键关系)。用户只能为每个估价创建一个评估 这看起来很简单,但我无法理解。我需要检查估价的任何现有评估是否属于该请求。用户,我该怎么做 这不起作用,因为评估\u已设置。所有都是一个列表。(评估在本例中是当前显示评估的评估列表) 所以我想我需要循环查看request.user.assessment\u set.all,看看每个用户的评估是否都在assessments列表中,但我觉得这样做效率很低,必须有更好的方法。建议?根据您的描述,我假设您具有以下

我有两个模型,分别是
估价
评估
。估价有许多评估(外键关系)。用户只能为每个估价创建一个评估

这看起来很简单,但我无法理解。我需要检查估价的任何现有评估是否属于该请求。用户,我该怎么做

这不起作用,因为
评估\u已设置。所有
都是一个列表。(
评估
在本例中是当前显示评估的评估列表)


所以我想我需要循环查看
request.user.assessment\u set.all
,看看每个用户的评估是否都在
assessments
列表中,但我觉得这样做效率很低,必须有更好的方法。建议?

根据您的描述,我假设您具有以下模型架构(我已使用相关名称表示反向关系)

因此,如果您想限制登录用户为每个评估仅创建一个评估,那么您只提供那些未评估的评估

views.py

unassessed_valuations = Valuation.objects.exclude(assessments__user=request.user)
模板

{% for valuation in unassessed_valuations %}
valuation assessment form
{% endfor %}

发布您的模型,使其易于理解您不应该在模板中真正执行这种逻辑-最好在视图代码中执行(例如,注释每个
评估
,说明用户是否已经完成它),然后你的模板逻辑就简单了。你想检查用户是否已经创建了一个对象吗?我在视图中进行了处理,并且能够在页面上正确显示它。谢谢
unassessed_valuations = Valuation.objects.exclude(assessments__user=request.user)
{% for valuation in unassessed_valuations %}
valuation assessment form
{% endfor %}