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.
|
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}
|
\section{Dépendance avec le modèle}
|
||||||
|
|
||||||
Un \textbf{form} peut hériter d'une autre classe Django.
|
Un \textbf{form} peut hériter d'une autre classe Django.
|
||||||
|
|
Loading…
Reference in New Issue