﻿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
28543	ModelForm.initial is affected while its bound instance's m2m field be set with new data	Wonder	nobody	"I found Django's admin log always doesn't include m2m-fields' change. So I looked into django source and found here: https://github.com/django/django/blob/1.11.4/django/contrib/admin/options.py#L1410.

After this line `self.save_related(request, form, formsets, not add)`, `form.initial` is also changed to the saved version, then affect `form.changed_data`.

Then I wrote some test code to reproduce the issue:

{{{
#!python
import datetime as dt
from django.contrib.auth.forms import UserChangeForm
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group

User = get_user_model()

g1=Group.objects.get_or_create(name='g1')[0]
g2=Group.objects.get_or_create(name='g2')[0]
user = User.objects.get_or_create(username='wonder')[0]
user.groups.set([g1])

form = UserChangeForm({
    'username': 'wonder',
    'date_joined': dt.datetime.now(),
}, instance=user)
assert form.is_valid()

form.initial['groups']  # Out: <QuerySet [<Group: g1>]>
user.groups.set([g2])
form.initial['groups']  # Out: <QuerySet [<Group: g2>]>
}}}

Note the two comments in the code."	Bug	closed	Database layer (models, ORM)	1.11	Normal	fixed	form		Accepted	1	0	0	0	0	0
