Skip to main content
 首页 » 编程设计

python之Django 获取表单未排序列表

2025年04月02日24thcjp

我在创建新对象时更改了我的管理表单以隐藏某些字段,但它按字母顺序排列字段,我想按它们在我的模型中的顺序排列它们。有什么建议吗?

_add_fields = ('name', 'size', 'slug', 
               'img', 'description', 'quantity') 
 
def get_form(self, request, obj=None, **kwargs): 
    model_form = super(ItemAdmin, self).get_form( 
        request, obj, **kwargs 
    ) 
 
    if obj is None: 
        model_form._meta.fields = self._add_fields 
        model_form.base_fields = { 
            field: model_form.base_fields[field] 
            for field in self._add_fields 
        } 
 
    return model_form 

请您参考如下方法:

您需要使用 collections 模块中的 OrderedDict 来实现:

from django.contrib import admin 
from collections import OrderedDict 
 
 
class ItemAdmin(admin.ModelAdmin): 
 
    _add_fields = ('name', 'category', 
                   'img', 'description', 'quantity') 
 
    def get_form(self, request, obj=None, **kwargs): 
        model_form = super(ItemAdmin, self).get_form( 
            request, obj, **kwargs 
        ) 
 
        if obj is None: 
            model_form._meta.fields = self._add_fields 
            d = OrderedDict() 
            for field in self._add_fields: 
                d[field] = model_form.base_fields[field] 
            model_form.base_fields = d 
        return model_form