/ / Formulaire dynamique Django et commande de champs - Django, formulaires

Formulaire dynamique Django et commande de champs - Django, formulaires

J'ai un formulaire pour enregistrer un "ticket" dans un département.

Il s’agit d’un formulaire dynamique comportant des champs personnalisés supplémentaires en fonction de la catégorie / du service.

Chaque ticket comporte des champs standard tels que titre, date, contenu. Certains ont des champs appelés custom_acbdef qui permettent aux départements de poser des questions supplémentaires sur leurs formulaires.

Ces champs supplémentaires apparaissent toujours au bas du formulaire, ce qui est OK pour le moment. (J'ajoute le formulaire de modèle, puis boucle simplement dans des champs supplémentaires et les ajoute à self.fields)

Maintenant, je veux ajouter un champ standard supplémentaire"PDF pièce jointe" mais je veux que cela apparaisse toujours au bas du formulaire. Le problème pour le moment est que tous les champs standard apparaissent en haut et les champs personnalisés en bas.

class Meta:
model = Ticket
fields = ("ticket_category","ticket_branch","ticket_content", "ticket_attachment1")

Donc, dans ce qui précède, je voudrais que tous insèrent tous meschamps personnalisés entre ticket_content et ticket_attachment. Des idées comment je peux faire ceci? Tous les champs de formulaire personnalisés ont des noms de champs dynamiques, mais commencent toujours par "custom_"

Réponses:

0 pour la réponse № 1

Quand les choses commencent à devenir ingérables dans mes formulaires __init__, Je prends généralement l’une des approches suivantes:

Créer une usine

En utilisant les fermetures, écrivez une fonction pour construire le fields puis retourne dynamiquement cette classe.

def TicketForm():
fields = ["title", "date", "content"]

for custom_field in custom_fields:
fields.append(custom_field)

fields.append("ticket_content")
fields.append("ticket_attachment1")

class _TicketForm(forms.ModelForm):
class Meta:
model = Ticket
fields = fields

return _TicketForm

Plusieurs formes

Je vais créer plusieurs formulaires différents en fonction du cas d’utilisation, puis, selon moi, déterminer lequel doit être renvoyé. J'ai posté un exemple de cela hier.

Pour en savoir plus, Découvrez un post par James Bennett (Django Core Dev) sur les formes dynamiques.