пытается изменить порядок полей в admin ModelForm
. Bellow - моя попытка, однако порядок не изменился. Добавленные поля oi_number
и vat_number
показаны в конце, кроме того, что они не в конце в self.fields
SortedDict dictionary.Неверный порядок полей ModelForm?
class ContactAdminForm(forms.ModelForm):
oi_number = fields_for_model(OrganizationExtra)['oi_number']
vat_number = fields_for_model(OrganizationExtra)['vat_number']
# fields = ('organization', 'oi_number', 'vat_number')
# ^^^ this won't affect fields order either
class Meta:
model = Organization
def __init__(self, *args, **kwargs):
super(ContactAdminForm, self).__init__(*args, **kwargs)
try:
org_ix = self.fields.keyOrder.index('organization')
self.fields.keyOrder.insert(org_ix+1, self.fields.keyOrder[-2])
self.fields.keyOrder.insert(org_ix+2, self.fields.keyOrder[-1])
del self.fields.keyOrder[-2:]
except ValueError:
pass
ли получить порядок полей решен до __init__
методы называется? Как я могу изменить свой порядок?
Update: выше ModelForm
используется как форма в админ модели, которая определяет свои собственные поля, так что если я ставлю все определение полей в форме выше, я буду получать FieldError
исключение о неизвестном имя поля:
class ContactAdminForm(forms.ModelForm):
...
class Meta:
model = Organization
fields = ('organization', 'oi_number', 'vat_number')
class ContactOptionsEx(ContactOptions):
form = ContactAdminForm
admin.site.register(Contact, ContactOptionsEx)
# at attempt to render the form:
# FieldError at /admin/contact/contact/3/
# Unknown field(s) (organization) specified for Organization
Однако поле имени organization
делает существует и доступен в ContactAdminForm.__init__
методом.
ли вы положили 'поля = ... 'под' Мета '? Это должно сработать ... – sk1p
@ sk1p, если я поместил поля в класс 'Meta', тогда я получаю исключение FieldError. Подробнее см. В обновлении вопроса. –
@yuvi Я считаю, что связанный возможный дубликат не полностью отвечает на вопрос. –