【发布时间】:2017-03-11 19:06:08
【问题描述】:
管理员(已登录)想要注册一个与管理员具有相同关联名称的成员,但它会引发此错误。
我有什么遗漏吗?
还是个新手,感谢你们的帮助,伙计们!
管理员\models.py
class Administrator(AbstractUser):
...
association= models.ForeignKey(Association)
class Meta:
db_table = 'Administrator'
成员\models.py
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)})
使用回溯编辑
Traceback (most recent call last):
File "C:\Python36\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
response = get_response(request)
File "C:\Python36\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Python36\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\...\member\views.py", line 184, in member_signup
form = RegForm(request.POST, request.user)
File "C:\...\member\forms.py", line 113, in __init__
self.fields['association'].queryset = Association.objects.filter(asoc_name=user.association)
AttributeError: 'QueryDict' object has no attribute 'association'
【问题讨论】:
-
你能提供回溯吗?
-
@JensAstrup 添加了回溯
标签: python django python-2.7 python-3.x django-views