首页 > 解决方案 > 获取与使用 ModelMultipleChoiceField 时添加的对象相关的所有对象

问题描述

我正在尝试创建一个注册表单,用户可以在其中从列表中指定许多类别和语言,但是当我从列表中选择一两个对象进行注册时,我发现新用户存储了所有对象。就像我检查了所有对象一样。

表格.py

class SignUpForm(UserCreationForm, ModelForm): 
    categories=forms.ModelMultipleChoiceField(queryset=Category.objects.all(),
                     widget=forms.CheckboxSelectMultiple(), required=True)
    languages = forms.ModelMultipleChoiceField(queryset=Language.objects.all(), 
                     widget=forms.CheckboxSelectMultiple(), required=True) 

    class Meta:
        model = User
        fields = ['username', 'email','categories', 'languages']

模型.py

class User(AbstractUser, models.Model):
    password1 = models.CharField(max_length=50)
    categories = models.ManyToManyField('Category')
    languages = models.ManyToManyField('Language')

    def __str__(self):
        return self.username

class Category(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class Language(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name

视图.py

class SignUp(CreateView):
    form_class = SignUpForm
    success_url = reverse_lazy('index')
    template_name = 'registration/signup.html'

标签: djangodjango-modelsdjango-forms

解决方案


推荐阅读