【发布时间】:2013-04-09 17:58:37
【问题描述】:
我在执行项目时收到此错误
/accounts/EmpReg/ 处的字段错误
无法将关键字“用户名”解析为字段。选项有:companytype、contactno、contactperson、id、jobs、user
views.py
class User(models.Model):
username = models.CharField(_('username'), max_length=30, unique=True)
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
email = models.EmailField(_('e-mail address'), blank=True)
password = models.CharField(_('password'), max_length=128)
companyname = models.CharField(_('companyname'), max_length=50)
usertype = models.CharField(_('usertype'), max_length=30)
is_staff = models.BooleanField(_('staff status'), default=False)
is_active = models.BooleanField(_('active'), default=True)
is_superuser = models.BooleanField(_('superuser status'), default=False)
last_login = models.DateTimeField(_('last login'), default=timezone.now)
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
groups = models.ManyToManyField(Group, verbose_name=_('groups'),blank=True)
user_permissions = models.ManyToManyField(Permission,verbose_name=_('user permissions'), blank=True)
class RegistrationProfile(models.Model):
user = models.ForeignKey(User, unique=True)
activation_key = models.CharField(max_length=40)
key_generated = models.DateTimeField()
objects = RegistrationManager()
forms.py
class EmpRegistrationForm(forms.Form):
username = forms.CharField(max_length=30,widget=forms.TextInput)
email = forms.EmailField(widget=forms.TextInput))
password1 = forms.CharField(widget=forms.PasswordInput)
password2 = forms.CharField(widget=forms.PasswordInput)
usertype = forms.CharField(widget=forms.HiddenInput)
companyname = forms.CharField(widget=forms.TextInput)
companytype = forms.ChoiceField(choices=PREFERRED_COMPANYTYPE, widget=forms.RadioSelect())
contactno = forms.CharField(widget=forms.TextInput)
contactperson = forms.CharField(widget=forms.TextInput)
tos = forms.BooleanField()
views.py
def empreg(request):
if request.method == 'POST':
form = EmpRegistrationForm(request.POST)
if form.is_valid():
user = RegistrationProfile.objects.create_inactive_user(user__username=form.cleaned_data['username'],password=form.cleaned_data['password1'],email=form.cleaned_data['email'],)
user.companyname = form.cleaned_data['companyname']
user.usertype = form.cleaned_data['usertype']
user.save()
e=EmployerReg_Form(user=user, companytype=form.cleaned_data['companytype'],contactno=form.cleaned_data['contactno'],contactperson=form.cleaned_data['contactperson'])
e.save()
return HttpResponseRedirect('/accounts/EmpReg_Complete/')
else:
form = EmpRegistrationForm()
return render_to_response('registration/empregform.html', { 'form': form }, context_instance=RequestContext(request))
models.py
class EmployerReg_Form(models.Model):
user = models.ForeignKey(User, unique=True)
companytype = models.CharField(max_length=20)
contactno = models.CharField(max_length=30)
contactperson = models.CharField(max_length=30)
PREFERRED_COMPANYTYPE = (
('Company', 'Company'),
('Consultancy', 'Consultancy'),
)
请检查上面的代码并帮助我做错了
【问题讨论】:
-
什么是
EmployerReg_Form,它的外观如何? -
EmployerReg_Form 是一个模型,现在我更新了
-
仍然缺少一些东西。您的问题中未包含相关模型...
-
我清除了上述错误。请对此给出答案。我将雇主和求职者的详细信息存储在同一个用户表中。我使用字段 usertype(usertype=employer/jobseeker) 区分了这两个细节。身份验证后登录时,应将其重定向到仪表板,具体取决于其用户类型。如果用户是求职者,则应将其重定向到一个仪表板,否则用户是雇主,则应将其重定向到另一个仪表板页面。请帮帮我
-
我建议您自己尝试一下,并就此开始一个新的话题。为了让您开始,请阅读此页面:docs.djangoproject.com/en/dev/topics/auth/default/…“如何登录用户”在登录视图中:q = User.objects.get(username=username) 然后就像 q.usertype == 一样简单'employer' 重定向到 .... if q.usertype == 'jobseeker': 重定向到....
标签: django