Как сделать значения, сохраненные из CheckboxSelectMultiple, заполнить мою форму редактирования в Django?

Я пытаюсь создать рабочий вид редактирования. Создание профиля пользователя отлично работает. Я могу видеть сохраненные значения флажка в admin, но когда я иду редактировать форму, все отображается правильно, кроме флажков. Они пусты, как будто значения не были сохранены. Если я выберу новые значения и отправлю форму редактирования, новые значения будут сохранены правильно, поэтому моя проблема заключается в том, чтобы сохранить сохраненные значения в качестве галочек.

Моя форма:

class ProfileUserForm(forms.ModelForm): class Meta: model = ProfileUser fields = ('field1', 'field2','field3','field4', 'chosencategories') chosencategories = forms.ModelMultipleChoiceField( widget=forms.CheckboxSelectMultiple, queryset=Category.objects.all(), to_field_name="name") 

На основе этих моделей:

 class ProfileUser(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL) field1 = models.CharField(max_length=155, blank=True) field2 = models.CharField(max_length=155, blank=True) field3 = models.DateField(blank=True) field4 = models.CharField(max_length=255, blank=True) chosencategories=models.ManyToManyField(Category, blank=True, null=True, related_name='categorieschosen') def __str__(self): return self.user.username class Category(models.Model): name=models.CharField(max_length=100, choices=CATEGORIES) class Meta: verbose_name_plural = "categories" def __str__(self): return self.name 

Вот мое редактирование в настоящее время:

 @login_required def edit_user_profile(request, username): user = request.user userprofile = ProfileUser.objects.get_or_create(user=user)[0] if request.method == 'POST': profile_form = ProfileUserForm(request.POST, instance=userprofile) if profile_form.is_valid(): updated_user_profile=profile_form.save(commit=False) updated_user_profile.user = user updated_user_profile.save() profile_form.save_m2m() return HttpResponseRedirect(reverse('accounts:userprofile', kwargs={'username': user.username})) messages.success(request, ('Your profile was successfully updated!')) else: messages.error(request, ('Please correct the error below.')) else: profile_form = ProfileUserForm(instance=userprofile) return render(request, 'accounts/edit_user_profile.html', {'profile_form': profile_form }) 

Я посмотрел:

  • Заполнять CheckboxSelectMultiple с существующими данными из формы модели django
  • http://www.wkoorts.com/wkblog/2009/08/10/pre-populate-django-modelform-with-specific-queryset/

и я добавил предложение пользователя:

 profile_form = ProfileUserForm(instance=ProfileUser.objects.get(user=request.user)) 

но это имеет тот же эффект, что и моя текущая строка:

 profile_form = ProfileUserForm(instance=userprofile) 

Поэтому я не уверен, что мне не хватает. Вся помощь была оценена. Благодарю.

Python - лучший язык программирования в мире.