Python Django2.1:Queryset ModelChoice在一个ModelForm中,然后保存两个表单

Python Django2.1:Queryset ModelChoice在一个ModelForm中,然后保存两个表单,python,django,python-3.x,django-forms,django-2.0,Python,Django,Python 3.x,Django Forms,Django 2.0,我希望当前登录的用户能够创建和保存这两个表单。第二种形式有很多字段和ForeignKey关系,如下所示 目前,我已尝试从ChatGroupUserModelForm中查询当前用户 使用当前代码,只要我尝试访问该页面,Django就会出现以下错误: __init__() missing 1 required positional argument: 'user' 它说错误来自第88行,即: form_user = ChatGroupUserForm() 完全回溯 models.py form

我希望当前登录的用户能够创建和保存这两个表单。第二种形式有很多字段和ForeignKey关系,如下所示

目前,我已尝试从
ChatGroupUser
ModelForm中查询当前用户

使用当前代码,只要我尝试访问该页面,Django就会出现以下错误:

__init__() missing 1 required positional argument: 'user'
它说错误来自第88行,即:

form_user = ChatGroupUserForm() 
完全回溯 models.py forms.py views.py
如果您能提供帮助,我将不胜感激。我不知道django为什么会抛出错误,以及我为什么无法创建和保存这两个表单。

这是因为您的
init
函数具有参数
user

而您的视图未通过
用户

下面是如何修复它的
在您看来:
form\u user=ChatGroupUserForm(user=request.user)

然后以您的形式:

class ChatGroupUserForm(forms.ModelForm):
    class Meta:
        model = ChatGroupUser
        fields = ['user']

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')
        super(ChatGroupUserForm, self).__init__(*args, **kwargs)
        self.fields['user'].queryset = User.objects.filter(user=self.user)
希望它能起作用:)

class ChatGroup(models.Model):
    name = models.CharField(max_length=100, blank=True, null=True)
    group_admin = models.ForeignKey(User, on_delete=models.CASCADE, related_name='chat_group_admins')
    is_active = models.BooleanField(default=True, null=True)
    is_current = models.BooleanField(default=False, null=True)

class ChatGroupUser(models.Model):
    user = models.ManyToManyField(User)
    chat_group = models.ForeignKey(ChatGroup, on_delete=models.CASCADE, related_name='chat_group_users')
from django.contrib.auth import get_user_model

User = get_user_model()

class ChatGroupForm(forms.ModelForm):
    class Meta:
        model = ChatGroup
        fields = ['name',]

class ChatGroupUserForm(forms.ModelForm):
    class Meta:
        model = ChatGroupUser
        fields = ['user']

    def __init__(self, user, *args, **kwargs):
        super(ChatGroupUserForm, self).__init__(*args, **kwargs)
        self.fields['user'].queryset = User.objects.filter(user=user)

def create_group(request):
    if request.method == 'POST':
        form_group = ChatGroupForm(request.POST)
        form_user = ChatGroupUserForm(request.POST)

        if form_group.is_valid():
            create_form = form_group.save(commit=False)
            create_form.group_admin = request.user
            create_form.save()
            form_user.save(commit=False)
            form_user.user = user
            form_user.save()
            return redirect('core:group_list')

    else:
        form_group = ChatGroupForm()
        form_user = ChatGroupUserForm()

    context = {
            'form_group':form_group,
            'form_user': form_user
    }
    return render(request, 'core/create-group.html', context)
class ChatGroupUserForm(forms.ModelForm):
    class Meta:
        model = ChatGroupUser
        fields = ['user']

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')
        super(ChatGroupUserForm, self).__init__(*args, **kwargs)
        self.fields['user'].queryset = User.objects.filter(user=self.user)