Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 带有附加模型的CreateView_Django_Django Generic Views - Fatal编程技术网

Django 带有附加模型的CreateView

Django 带有附加模型的CreateView,django,django-generic-views,Django,Django Generic Views,我正在使用CreateView创建一个用户 views.py: class UserCreateView(CreateView): model = User form_class = UserCreateForm success_url = reverse_lazy('patient:users') forms.py class UserCreateForm(ModelForm): class Meta: model = User

我正在使用CreateView创建一个用户

views.py:

class UserCreateView(CreateView):
    model = User
    form_class = UserCreateForm
    success_url = reverse_lazy('patient:users')
forms.py

class UserCreateForm(ModelForm):
    class Meta:
        model = User
        fields = ['first_name', 'last_name']
我有另一个模型,UserGroups,定义如下:

class UserGroup(models.Model):
    users = models.ManyToManyField(User, blank=True, related_name='user_groups')
    name = models.CharField(max_length=50)
问题是,我希望能够在UserCreateForm中将用户组分配给用户。这样做:

class UserCreateForm(ModelForm):
        class Meta:
            model = User
            fields = ['first_name', 'last_name', 'user_groups']
似乎不起作用


最好的方法是什么?

您需要在UserCreateForm中添加一个额外的字段:

class UserCreateForm(ModelForm):
    groups = forms.ModelMultipleChoiceField(queryset=UserGroup.objects.all())
并在CreateView的
form\u valid
方法中设置它:

def form_valid(self):
    response = super(UserCreateView, self).form_valid()
    self.object.user_groups = self.form.cleaned_data['groups']
    return response

您需要向UserCreateForm添加一个额外字段:

class UserCreateForm(ModelForm):
    groups = forms.ModelMultipleChoiceField(queryset=UserGroup.objects.all())
并在CreateView的
form\u valid
方法中设置它:

def form_valid(self):
    response = super(UserCreateView, self).form_valid()
    self.object.user_groups = self.form.cleaned_data['groups']
    return response

只是为了澄清一下,您想为一个用户分配多个
用户组
@完全正确!使用multiple selectJust澄清一下,您想为一个用户分配多个
用户组
@完全正确!使用多选