Я реализую связь m2m через промежуточную модель, используя виджет m2m по умолчанию. У меня есть модели Person
и Project
, связанные с использованием модели Membership
.django admin динамически задано изменение формы исходные данные
До сих пор мне удалось отобразить виджет по умолчанию m2m в форме изменения Person
и правильно создать экземпляры промежуточной модели, но моя проблема заключается в заполнении виджета при изменении Person
.
Это класс формы я использую с PersonAdmin
:
class PersonForm(forms.ModelForm):
projects = forms.ModelMultipleChoiceField(models.Project.objects.all(),
widget=widgets.FilteredSelectMultiple(
verbose_name="Projects",
is_stacked=False,
attrs={'rows':'10'}))
projects.required = False
class Meta:
model = models.Person
fields = ['name', 'last_name', 'personal_id_number',
'personal_id_type', 'administrative_viability',
'observations']
def save(self, commit=True):
ret = super(PersonForm, self).save(commit)
for p in self.cleaned_data['projects']:
models.Membership.objects.create(person=self.instance, project=p)
return ret
И сам PersonAdmin
:
class PersonAdmin(admin.ModelAdmin):
form = PersonForm
def get_changeform_initial_data(self, request):
initial = super(PersonAdmin, self).get_changeform_initial_data(request)
initial['projects'] = models.Person.get(pk=initial['person']).project_set.all()
return initial
Я попытался установить начальное значение projects
в методе get_changeform_initial_data
подобное , но это не сработает. В целом, похоже, что это игнорируется, как будто я не переопределяю его должным образом.
Любая помощь будет принята с благодарностью!