Python “QueryDict”对象没有属性“association”

Python “QueryDict”对象没有属性“association”,python,django,python-2.7,python-3.x,django-views,Python,Django,Python 2.7,Python 3.x,Django Views,已登录的管理员希望注册与管理员具有相同关联名称的成员,但会引发此错误 有什么我遗漏的吗 还是个新手,谢谢你们的帮助,伙计们 admin\models.py class Administrator(AbstractUser): ... association= models.ForeignKey(Association) class Meta: db_table = 'Administrator' from pl.admin.models import

已登录的管理员希望注册与管理员具有相同关联名称的成员,但会引发此错误

有什么我遗漏的吗

还是个新手,谢谢你们的帮助,伙计们

admin\models.py

class Administrator(AbstractUser):
    ...
    association= models.ForeignKey(Association)


    class Meta:
        db_table = 'Administrator'
from pl.admin.models import Administrator


class Association(models.Model):
    asoc_name = models.CharField(max_length=100)

    class Meta:
        db_table = 'Association'

    def __str__(self):
        return self.asoc_name
member\models.py

class Administrator(AbstractUser):
    ...
    association= models.ForeignKey(Association)


    class Meta:
        db_table = 'Administrator'
from pl.admin.models import Administrator


class Association(models.Model):
    asoc_name = models.CharField(max_length=100)

    class Meta:
        db_table = 'Association'

    def __str__(self):
        return self.asoc_name
forms.py

class RegForm(forms.ModelForm):
    ...
    association = forms.ModelChoiceField(queryset=Association.objects.none())
     ...


    class Meta:
        model = Administrator
        fields = [..., 'association', ...]

    def __init__(self, user, *args, **kwargs):
        super(RegForm, self).__init__(*args, **kwargs)
        self.fields['association'].queryset = Association.objects.filter(
                                              asoc_name=user.association)
views.py

def member_signup(request):
    if request.method == 'POST':
        form = RegForm(request.POST, request.user)
        if not form.is_valid():
            return render(request, 'member/member_signup.html',
                          {'form': form})

        else:
            ...
            asoc = form.cleaned_data.get('association')
            ...
            Member.objects.create(...
                                  association=asoc,    
                                  ...)
            user = authenticate(...
                                association=asoc,
                                ...)
            return redirect('/')

    else:
        return render(request, 'member/member_signup.html',
                      {'form': RegForm(request.user)})
回溯编辑

user是表单的第一个参数,但在if子句中,在request.POST之后,将其作为第二个参数传递


通常应避免更改表单实例化的签名;相反,您应该将用户作为关键字参数传递,并从kwargs处获取它。

您可以提供回溯吗?@JensAstrup添加了回溯