Django如何检查id是否包含在表列中?

2024-09-30 04:27:07 发布

您现在位置:Python中文网/ 问答频道 /正文

伙计们。在

如果请求.用户存在于我的表联盟成员的某一列user中。我发现的方法行不通。在

在视图.py在

@login_required(login_url='login/')
def search_leagues(request):
if request.method == 'POST':
    return redirect('join_league')

leagues = League.objects.all()
return render(request, 'search_leagues.html', { 'allleagues': leagues })

在模型.py在

^{pr2}$

搜索_联盟.html在

{% for league in allleagues %} <tr> <td class="center">{{ league.league_name }}</td> <td class="center">{{ league.leaguemember_league.count}}/{{ league.leaguesettings_league.league_number_teams }}</td> <td class="center">{{ league.leaguesettings_league.league_eligibility }}</td> <td class="center">{{ league.leaguesettings_league.league_lifetime }}</td> {% if request.user in league.leaguemember_league.user %} DO SOMETHING!!! {% else %} {% if league.leaguemember_league.count < league.leaguesettings_league.league_number_teams %} {% if league.leaguesettings_league.league_eligibility == "Private" %} <form method="post" action="{% url 'joinleague' pk=league.id %}"> <td class="center"><a href="{% url 'joinleague' pk=league.id %}" class="btn btn-mini btn-warning">Soliticar</a></td> </form> {% elif league.leaguesettings_league.league_eligibility == "Public" %} <form method="post" action="{% url 'joinleague' pk=league.id %}"> <td class="center"><a href="{% url 'joinleague' pk=league.id %}" class="btn btn-mini btn-info">Entrar</a></td> </form> {% endif %} {% endif %} {% endif %} </tr> {% endfor %}

此错误位于以下行:

{% if request.user in league.leaguemember_league.user %}

总是转到ELSE块

谢谢大家


Tags: formurlifrequestclasstdcenterpk
1条回答
网友
1楼 · 发布于 2024-09-30 04:27:07

league.leaguemember_league不会给您一个LeagueMember对象,而是一个^{}对象(因此您无法在其中找到user属性,因此模板逻辑将不起作用)。在

你要做的是在你的关系中深入两个层次(League->;LeagueMember->;User)。在模板中不容易实现这种逻辑,可能需要在视图代码中执行。例如:

league_data = []
for league in League.objects.all():
    league_data.append({
        'league': league,
        'users': User.objects.filter(leaguemember__league=league) # This gives you all the users that are related to this league
    })

 return render(request, 'search_leagues.html', { 'allleagues': league_data})

然后,您需要修改所有模板逻辑以使用此新结构:

^{pr2}$

if块中,您可以执行以下操作:

{% if request.user in league_data.users %}

请注意,如果您有大量的用户/联盟,那么这种查询可能不是非常有效—在这种情况下,您可能需要重新考虑您的模型设计。在

相关问题 更多 >

    热门问题