我收到了一个ValueError:无法分配“[Category:cat1],[Category:cat2]”:“ProfileUser.chosencategories”必须是“类别”实例。在尝试保存我的ModelForm时。
我的表格如下:
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")
我的观点是:
@login_required
def create_user_profile(request):
user = request.user
if request.method=='POST':
profile_user_form=ProfileUserForm(request.POST)
if profile_user_form.is_valid():
new_user_profile=profile_user_form.save(commit=False)
new_user_profile.user=user
new_user_profile.save()
return render(request, 'accounts/user_profile_registered.html',
{'new_user_profile':new_user_profile})
else:
profile_user_form=ProfileUserForm()
return render(request, 'accounts/create_user_profile.html',
{'profile_user_form':profile_user_form})
我的模特是:
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.ForeignKey(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
我想允许用户选择Category对象的多个实例,并将这些实例保存到selectedcategories属性中的配置文件中。我已经设置了模型和表单字段。
我看过以下问题:
Django form not saving with ModelChoiceField - ForeignKey
Django: ValueError when saving an instance to a ForeignKey Field
How to solve ValueError When save ModelMultipleChoiceField in ModelForm?
所有这些都涉及到主题,而没有提供明确的解决方案。从我读过的内容来看,似乎我需要在我的视图调用“if profile_user_form.is_valid()之前提供对Category对象的某种引用:” - 我仍然坚持我需要包含的内容以及原因。
所有帮助表示赞赏。感谢。
答案 0 :(得分:0)
chosencategories
,则 ManyToManyField
应该是ForeignKey
而不是ProfileUser