Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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_Forms_Django Templates - Fatal编程技术网

Django:在下拉列表中对项目进行排序(通过字段\顺序?)

Django:在下拉列表中对项目进行排序(通过字段\顺序?),django,forms,django-templates,Django,Forms,Django Templates,我正在使用一个模板上的下拉列表。我确实想在下拉列表中按字母顺序排列,但我不知道如何得到这个 template.html: <form method="POST" enctype="multipart/form-data"> {% csrf_token %} <fieldset> {{ form|crispy }} </fieldset> <div> <button type="s

我正在使用一个模板上的下拉列表。我确实想在下拉列表中按字母顺序排列,但我不知道如何得到这个

template.html

<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <fieldset>
        {{ form|crispy }}
    </fieldset>
    <div>
        <button type="submit">OK</button>
    </div>
</form>
def my_view(request):

    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():

            …

    return render(request, 'xxx/template.html', {'form': form})
from django import forms

from .models import Project


class MyForm(forms.Form):
    project = forms.ModelChoiceField(queryset=Project.objects)
    field_order = ['name', ]
class Project(models.Model):
    name = models.CharField()
    …
表单在表单中定义。py

<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <fieldset>
        {{ form|crispy }}
    </fieldset>
    <div>
        <button type="submit">OK</button>
    </div>
</form>
def my_view(request):

    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():

            …

    return render(request, 'xxx/template.html', {'form': form})
from django import forms

from .models import Project


class MyForm(forms.Form):
    project = forms.ModelChoiceField(queryset=Project.objects)
    field_order = ['name', ]
class Project(models.Model):
    name = models.CharField()
    …
型号.py

<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <fieldset>
        {{ form|crispy }}
    </fieldset>
    <div>
        <button type="submit">OK</button>
    </div>
</form>
def my_view(request):

    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():

            …

    return render(request, 'xxx/template.html', {'form': form})
from django import forms

from .models import Project


class MyForm(forms.Form):
    project = forms.ModelChoiceField(queryset=Project.objects)
    field_order = ['name', ]
class Project(models.Model):
    name = models.CharField()
    …
这篇文章讨论了
字段的顺序
。form.py中的行
字段\u order=['name',]
无效


怎么了?

您可以通过将查询更改为

queryset=Project.objects.order\u by(“名称”)

或者,如果您需要按(“-name”)反向排序,您可以通过将查询更改为

queryset=Project.objects.order\u by(“名称”)

或者,如果您需要按(“-name”)

反向排序,正如文档所述,这是表单字段的排序

例如:

class MyForm(forms.Form):
    project = forms.somefield
    name = forms.somefield
    field_order = ['name', ]
将在表格中显示项目之前的名称


您需要更改
modelcooicefield
的排序顺序,这意味着您应该更改queryset参数

forms.ModelChoiceField(Project.objects.order_by('name'))

正如文档所述,这是表单字段的排序

例如:

class MyForm(forms.Form):
    project = forms.somefield
    name = forms.somefield
    field_order = ['name', ]
将在表格中显示项目之前的名称


您需要更改
modelcooicefield
的排序顺序,这意味着您应该更改queryset参数

forms.ModelChoiceField(Project.objects.order_by('name'))