【发布时间】:2020-09-03 04:24:23
【问题描述】:
我将一堆项目对象作为变量“项目”传递到我的模板中。 然后我像这样遍历它们:
{% for project in projects %}
<div class="conflict">
<h2>{{ project.title }}</h2>
<div class="conflictdata">
<p>A conflict with *USER*</p>
<p>Created on *DATE*</p>
<p>MORE INFO HERE?</p>
</div>
</div>
{% endfor %}
现在项目模型与 Django 用户模型具有多对多的关系(但每个项目只有两个用户)(而每个用户可以有多个项目)。我想做的是从 Project.users 查询集中排除当前登录的 {{user}} 并将其显示在我的模板中(因为那将是当前登录用户与之共享所述项目的用户)。
我怎样才能做到这一点?
如果它有帮助,这也是我的观点:
@login_required
def myconflicts(request):
form = ProjectForm(request.POST or None)
if request.method == "POST":
form = ProjectForm(request.POST)
if form.is_valid():
project = form.save()
project.users.add(request.user)
project.users.add(User.objects.last())
return redirect('problemdashboard:problem-dashboard', project_id=project.pk)
form = NeedForm()
else:
form = NeedForm()
return render(request, 'conflictmanagement/myconflicts.html', {
'form': form,
'projects': request.user.project_set.all()
})
【问题讨论】:
-
在您的模板中使用 if 条件检查用户名是否与查询集中的用户不匹配。如果匹配,则不打印,否则打印。您可以通过这个
if request.user.username访问当前用户名 -
@muhammadhashirhassan 但是我如何在模板中获取查询集才能做到这一点?您能否在答案中给我看一个简单的例子?
-
能否请您展示您实施多对多的项目模型类,以便我可以据此举个例子?
标签: django