﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
36801	`construct_change_message`call `form.changed_data` after check if is add	Rodolfo Becerra	Rodolfo Becerra	"This is the currently code of the method `construct_change_message` of `django.contrib.admin.utils`
{{{
#!python
def construct_change_message(form, formsets, add):
    """"""
    Construct a JSON structure describing changes from a changed object.
    Translations are deactivated so that strings are stored untranslated.
    Translation happens later on LogEntry access.
    """"""
    # Evaluating `form.changed_data` prior to disabling translations is
    # required to avoid fields affected by localization from being included
    # incorrectly, e.g. where date formats differ such as MM/DD/YYYY vs
    # DD/MM/YYYY.
    changed_data = form.changed_data
    with translation_override(None):
        # Deactivate translations while fetching verbose_name for form
        # field labels and using `field_name`, if verbose_name is not provided.
        # Translations will happen later on LogEntry access.
        changed_field_labels = _get_changed_field_labels_from_form(form, changed_data)

    change_message = []
    if add:
        change_message.append({""added"": {}})
    elif form.changed_data:
        change_message.append({""changed"": {""fields"": changed_field_labels}})
}}}
If you notice that the `form.changed_data` property is being called unnecessarily before checking whether it is an add behavior. I propose call the `changed_data = form.changed_data` after check if is add.

If I am accepted, I would like to create the PR myself."	Cleanup/optimization	closed	contrib.admin		Normal	fixed	construct_change_message	Rodolfo Becerra	Ready for checkin	1	0	0	0	1	0
