Python 如何在models.py文件中获取外键值的最大值?

Python 如何在models.py文件中获取外键值的最大值?,python,html,django,Python,Html,Django,这是我的html文件 {% for member in member_list %} {% for batting in batting_list %} {% if member.id == batting.member.id %} {{ batting }} <br> {{ batting.match.id }} <br> {{

这是我的html文件

{% for member in member_list %}
    {% for batting in batting_list %}
        {% if member.id == batting.member.id %}
            {{ batting }}
            <br>
            {{ batting.match.id }}
            <br>
            {{ batting.runs }}
            <br>
            <hr>
        {% endif %}
    {% endfor %}
{% endfor %}
我试图弄清楚如何在html文件中显示成员x的最大运行次数。目前,我已经能够做到这一点,为整个打击表,但不是为个人成员!请提供任何帮助

您可以查询:

from django.db.models import Max

member.batting_set.aggregate(
    max_runs=Max('batting__runs')
)['max_runs']
然后用以下方式呈现:

{% for member in member_list %}
    {{ member.max_runs }}
{% endfor %}
{%用于成员列表%中的成员]
{{member.max_runs}

{%endfor%}
您需要在查询集中创建注释,该注释将包含成员的最高运行次数

from django.db.models import Max

Member.objects.annotate(max_runs=Max('batting__runs'))
您可以像访问常规字段一样访问它

member_object.max_runs
我不确定您的视图,但对于ListView,类将如下所示

class MemberView(ListView):
    template_name = 'tmp.html'
    model = Member

    def get_queryset(self):
        return Member.objects.annotate(max_runs=Max('batting__runs')).all()

您可以对成员使用
annotate
,以获得最高的击球值

from django.db.models import Max
Member.objects.annotate(max_runs=Max("batting_set__runs"))

然后在模板上显示
{{member.max_runs}

请注意
击球设置
,而不仅仅是
击球设置
——外键的默认
相关的击球名称
。您可以通过在
batting
处将
related\u name=“batting”
添加到您的
成员
外键中来改变这一点。这会进入views.py文件还是在models.py中的member类下?因此在我的视图中,我必须使这个
member\u列表=member.objects.order\u by('teamsPlayedFor')。注释(max\u runs=max('batting\u runs'))。注释(min_runs=min('batting_runs'))
@Joelad:你可以在一个注释中完成,所以
.annotat(max_runs=…,min_runs=…)
。哦,谢谢!我会继续的!
class MemberView(ListView):
    template_name = 'tmp.html'
    model = Member

    def get_queryset(self):
        return Member.objects.annotate(max_runs=Max('batting__runs')).all()
from django.db.models import Max
Member.objects.annotate(max_runs=Max("batting_set__runs"))