Я пытаюсь создать полностью динамическую форму в admin django. Найдено раствор в goole, например this и this. Но это решение не работает для меня. Например, этот код:Django 1.7, dynamic administrator form
class DeviceAdmin(admin.ModelAdmin):
form = MyDeviceAdminForm
def get_fieldsets(self, request, obj=None):
fieldsets = super(DeviceAdmin, self).get_fieldsets(request, obj)
fieldsets[0][1]['fields'] += ('foo',)
return fieldsets
class MyDeviceAdminForm(forms.ModelForm):
class Meta:
model = Device
def __init__(self, *args, **kwargs):
super(MyDeviceAdminForm, self).__init__(*args, **kwargs)
self.fields['foo'] = forms.IntegerField(label="foo")
получил эту ошибку: "Неизвестное поле (s) (item_type), указанную для устройства Проверьте поля/fieldsets/исключить атрибуты класса DeviceAdmin."
И я не могу найти решение для этого. Я понимаю, что мне нужно определить в каком-то другом месте foo поле, но не знает где.
Необходимо указать, какие поля использовать или исключать те, которые вы не хотите использовать: https: // docs.djangoproject.com/ru/dev/topics/forms/modelforms/#selecting-the-fields-to-use – rnevius
@rnevius спасибо! Но я не могу этого сделать, потому что я не знаю, что подал имена, чтобы установить его явно в Meta ModelForm. Это моя проблема - я хочу сгенерировать некоторые поля в зависимости от исходного поля. И я не могу объявить их в методе ModelForm __init__, потому что для ModelAdmin это слишком поздно, и последняя страница html будет отсутствовать. – valex