Add the construct_change_message description
This commit is contained in:
parent
e8547083c5
commit
16f522d5ea
|
@ -48,6 +48,60 @@ Ils agissent come une glue entre l'utilisateur et la modélisation de vos struct
|
|||
|
||||
Tout comme pour le modèle (+ ref), l'idée est simplement de définir plusieurs niveaux de validation.
|
||||
|
||||
\section{Gestion du changement}
|
||||
|
||||
Dans le package \texttt{django.contrib.admin.utils}, on trouve une petite pépite du nom de \texttt{construct\_change\_message}.
|
||||
Cette fonction permet de construire un message de changement à partir de n'importe que \texttt{form} ou \texttt{formset}.
|
||||
Elle prend en paramètre une valeur booléenne supplémentaire qui indique s'il s'agit d'un ajout ou pas.
|
||||
Le résultat retourne une structure qui indique les champs qui ont été modifiés, les champs qui ont été ajoutés ou supprimés:
|
||||
|
||||
\begin{minted}{python}
|
||||
def construct_change_message(form, formsets, add):
|
||||
|
||||
[snip]
|
||||
|
||||
change_message = []
|
||||
if add:
|
||||
change_message.append({"added": {}})
|
||||
elif form.changed_data:
|
||||
change_message.append({"changed": {"fields": changed_field_labels}})
|
||||
if formsets:
|
||||
with translation_override(None):
|
||||
for formset in formsets:
|
||||
for added_object in formset.new_objects:
|
||||
change_message.append(
|
||||
{
|
||||
"added": {
|
||||
"name": str(added_object._meta.verbose_name),
|
||||
"object": str(added_object),
|
||||
}
|
||||
}
|
||||
)
|
||||
for changed_object, changed_fields in formset.changed_objects:
|
||||
change_message.append(
|
||||
{
|
||||
"changed": {
|
||||
"name": str(changed_object._meta.verbose_name),
|
||||
"object": str(changed_object),
|
||||
"fields": _get_changed_field_labels_from_form(
|
||||
formset.forms[0], changed_fields
|
||||
),
|
||||
}
|
||||
}
|
||||
)
|
||||
for deleted_object in formset.deleted_objects:
|
||||
change_message.append(
|
||||
{
|
||||
"deleted": {
|
||||
"name": str(deleted_object._meta.verbose_name),
|
||||
"object": str(deleted_object),
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
return change_message
|
||||
\end{minted}
|
||||
|
||||
\section{Dépendance avec le modèle}
|
||||
|
||||
Un \textbf{form} peut hériter d'une autre classe Django.
|
||||
|
|
Loading…
Reference in New Issue