Je souhaite rendre dynamique l'ajout de formulaire. Je veux ajouter quelques champs de formulaire en fonction de la configuration dans l'objet connexe.Formulaires dynamiques dans django-admin
J'ai quelque chose comme ceci:
class ClassifiedsAdminForm(forms.ModelForm):
def __init__(self,*args, **kwargs):
super(ClassifiedsAdminForm, self).__init__(*args, **kwargs)
self.fields['testujemy'] = forms.CharField(label = "test")
Et admin.py:
class ClassifiedAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
return ClassifiedsAdminForm
Comme vous pouvez le voir, je veux ajouter "testujemy" CharField à admin add-forme et le changement -forme. Cependant, cette façon ne fonctionne pas. Est-il possible d'ajouter un champ dans init? Il travaille en vue normale.
Merci, bon travail, m'a sauvé beaucoup de temps à le découvrir moi-même :) – fijter
Cela me confond encore grandement. Je m'attendrais à être capable de simplement spécifier la classe de formulaire dans la définition de classe ModelAdmin. J'apprécie votre ajout de cette réponse, cependant; il y a quelques autres questions de SO qui semblent équivalentes mais qui restent incomplètes ou incomplètes. – rych
Si cela n'a pas de sens pour vous, lisez ceci: http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python jusqu'à ce que ce soit le cas. Django utilise beaucoup les métaclasses en interne, en particulier avec les modèles et les formulaires –