Django的:类型错误:“用户名”是该功能的无效关键字参数

问题描述 投票:5回答:2

我有一个名为雇员的注册模式。当我运行的代码,我走了

username' is an invalid keyword argument for this function 

错误。

employee=Employee(user=user, username= form.cleaned_data['username'], email= form.cleaned_data['email'], password=form.cleaned_data['password'])

这是我的view.py代码

from django.http import HttpResponseRedirect
from django.contrib.auth.models import User
from django.shortcuts import render_to_response
from django.template import RequestContext
from Employee_Details.forms import RegistationForm
from Employee_Details.models import Employee

def EmployeeRegistation(request):
if request.user.is_authenticated():
    return HttpResponseRedirect('/profile/')

if request.method=='POST':
    form=RegistationForm(request.POST)
    if form.is_valid():
        user=User.objects.create_user(username= form.cleaned_data['username'],email= form.cleaned_data['email'],password=form.cleaned_data['password'])


        user.save()

        employee=Employee(user=user, username= form.cleaned_data['username'],email= form.cleaned_data['email'],password=form.cleaned_data['password'])
        employee.save()
        return HttpResponseRedirect('/profile/')

    else:
        return render_to_response('registation.html',{"form":form}, context_instance=RequestContext(request))


else:
    '''user is not submitting the form show a blank Registation Form'''
    form=RegistationForm();
    context={'form':form}
    return render_to_response('registation.html',context,context_instance=RequestContext(request))

这是我的模型:

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

class Employee(models.Model):
    user=models.OneToOneField(User)
    name=models.CharField(max_length=100)
    address=models.CharField(max_length=200)
    designation=models.CharField(max_length=100)
    email=models.CharField(max_length=100)  
    role=models.CharField(max_length=10)
    #image=models.ImageField()
    project=models.CharField(max_length=50)
    task=models.CharField(max_length=50)

    def __unicode(self):
        return self.name

这是我的form.py

from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
from Employee_Details.models import Employee

class RegistationForm(ModelForm):

    username=forms.CharField(label=(u'User Name'))
    email=forms.EmailField(label=(u'Email Address'))
    password=forms.CharField(label=(u'Password'))
    password1=forms.CharField(label=(u'Verfy Password'))    
    name=forms.CharField(label=(u'Name'))
    address=forms.CharField(label=(u'Address'))
    designation=forms.CharField(label=(u'Designation')) 
    role=forms.CharField(label=(u'Role'))
    #image=models.ImageField()
    project=forms.CharField(label=(u'Project'))
    task=forms.CharField(label=(u'Task'))

    class Meta:
        model=Employee
        exclude=('user',)

    def clean_username(self):
        username=self.cleaned_data['username']
        try:
            User.objects.get(username=username)
        except User.DoesNotExist:
            return username
        raise forms.ValidationError('The username is already taken. Please try with another')

    def clean(self):
        if self.cleaned_data['password'] !=self.cleaned_data['password1']:
            raise forms.ValidationError("The Password did not match. Please try again")
        return self.cleaned_data    

请别人帮帮我解决这个问题。我指一些视频教程。

django django-models django-forms typeerror
2个回答
8
投票

你有没有username场模型,它是多余的,因为你有一个领域已经在User模型:

user=User.objects.create_user(username=form.cleaned_data['username'],email= form.cleaned_data['email'],password=form.cleaned_data['password'])
user.save()

employee=Employee(user=user, email=form.cleaned_data['email'], password=form.cleaned_data['password'])
(...)

-2
投票

尝试modelformset_factory,而不是!

© www.soinside.com 2019 - 2024. All rights reserved.