Django Crispy表单输入乱序

Django Crispy forms input out of order

我正在使用 django-crispy_forms 构建一些表单,我需要它们按特定顺序排列(特别是我在 forms.py[=32 中的字段中建立的顺序=]).

forms.py:

class RegistroRelatorio(forms.ModelForm):
    class Meta:
       model = RelatorioVendas

       fields = {"razao_social","codigo_interno","nome_fantasia","endereco","bairro","uf","telefones","cnpj","fundacao",
              "negocios","cidades_negocios","c1_nome","c1_whats","c1_email","c1_cargo","c1_comunicacao","c1_preferencia"}

views.py

from django.shortcuts import render
from .models import RelatorioVendas
from django.http import HttpResponse
from .forms import RegistroRelatorio

# Create your views here.
def novo_relatorio(request):

form = RegistroRelatorio(request.POST or None)

if form.is_valid():
    form.save()
    return HttpResponse('Ok...')

return render(request,'river/novo_relatorio.html',{'form':form})

html:

{% extends 'river/base.html' %}

{% load crispy_forms_tags %}

{% block content %}

        <h3>Novo Relatorio</h3>
        <form method="post" >

            {% csrf_token %}
            {{form | crispy}}

            <button type="submit">Ok</button>
        </form>

{% endblock %}

我尝试在这个 class 中使用 label_order,它起作用了,但是当我使用 crispy 形式时 它停止工作...

我什至尝试使用 crispy 库中的 Layout 方法。

我没有发现 crispy 按您提供的顺序呈现字段有任何问题。显示您的 html 和观点。

forms.py 中的 fields 使用 'list' 而不是 'set':

class RegistroRelatorio(forms.ModelForm):
    class Meta:
        model = RelatorioVendas

        fields = ["razao_social", "codigo_interno", "nome_fantasia", "endereco", "bairro", "uf", "telefones", "cnpj",
                  "fundacao", "negocios", "cidades_negocios", "c1_nome", "c1_whats", "c1_email", "c1_cargo",
                  "c1_comunicacao", "c1_preferencia"]

根据documentation

A set is an unordered collection with no duplicate elements.