如何在 django 中过滤其主要对象后显示详细对象?

Posted

技术标签:

【中文标题】如何在 django 中过滤其主要对象后显示详细对象?【英文标题】:How to display detail objects after filtering their primary object in django? 【发布时间】:2019-09-10 09:54:54 【问题描述】:

我正在开发一个可以创建团队的应用程序,球员,我现在正在显示由外键球队连接的球员对象,这些球队显示相关球员到他们的球队。但我遇到的问题是球员对象显示在详细视图,显示所有播放器,而应显示特定播放器对象。请帮我解决问题。

这里是html

    % include 'games_app/base.html' %
    % block body_block %

<div>
    % for players in play.teams.all %
    <h1>Players :<strong>players.player_name</strong></h1>
    <h1>Players-age :<strong>players.player_age</strong></h1>
    <h1>Players-form :<strong>players.player_form</strong></h1>
    <h1>Players-over :<strong>players.over</strong></h1>
    <h1>Players-batting :<strong>players.batting</strong></h1>
    <a href="% url 'games_app:players_update' players.pk %">Edit Player</a></br>
    <a href="% url 'games_app:players_delete' players.pk %">Delete Player</a>
    % endfor %
</div>

    % endblock %

这里是详细玩家的views.py

def Detail_Players(request,pk):

    model = models.Team.objects.get(pk=True)

    template_name = 'games_app/players_detail.html'


    return render(request, template_name, context=model)

[已解决] 我刚刚更改了模型和其他细节。

【问题讨论】:

【参考方案1】:

你应该试试这个:

model = models.Team.objects.get(pk=pk)

然后以正确的方式将上下文传递给模板。

【讨论】:

正确设置上下文是什么意思 按照你说的做之后,我得到团队匹配查询不存在。 所以你想要一个在你的数据库中不存在的pk。 你想使用 play.teams.all 但没有在你的视图中声明 它存在,但我不知道为什么它给我这个错误【参考方案2】:

看起来您将 pk 设置为 True 而不是 pk。

model = models.Team.objects.get(pk=True)

应该是

model = models.Team.objects.get(pk=pk)

【讨论】:

我收到一个错误,然后团队匹配查询不存在。 我刚刚解决了这个问题,将模型设置为 Players 然后显示数据,这是一个愚蠢的错误,但非常棘手。 :)【参考方案3】:

在views.py 中创建detailview 的最简单方法如下:

from django.views import generic
class DetailView(generic.DetailView):
    model = Team
    template_name = 'games_app/players_detail.html'

那么在 urls.py 中,Pk 应该作为变量传递,以确定你想去哪个玩家:

path('<pk>/detail', views.DetailView.as_view(), name='detail'),

然后在您的模板中通过您的 for 循环使用方法“设置”,如下所示:

 % for player in team.player_set.all %
....

【讨论】:

以上是关于如何在 django 中过滤其主要对象后显示详细对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何过滤和统计 DJANGO 模板中的对象?

如何在 Django 模板中显示我过滤对象的其他条目

如何在ListAPIView中使用django-filter对过滤结果进行排序

如何通过多对一关系中同一相关对象的两个属性在 django 中进行过滤?

如何在默认过滤器中使用 django 变量作为文本

django 管理界面 - 如何在更改列表视图中折叠/展开对象详细信息?