首页 > 解决方案 > Django自动增量模型

问题描述

我设计的 Django 模型如下所示:

`

class User(models.Model):
      id=models.AutoField(primary_key=True)
      username=models.CharField(max_length=25,verbose_name="username")
      name=models.CharField(max_length=20,default="noName",verbose_name="name")
      password=models.CharField(max_length=20,verbose_name="password")
      email=models.EmailField()
      userCode=models.CharField(default=" ",max_length=100,verbose_name="User Code")

      def __str__(self):
            return self.username

      class Meta:
            ordering = ['-username']`

然后我在 view.py 中创建一个对象。虽然 id 是自动递增的,但 python 希望我定义一个 id。View.py 如下所示。

def register(request,id):
if request.method=='POST':
    form = RegisterForm(request.POST)
    if form.is_valid():
        username = form.cleaned_data['username']
        name=form.cleaned_data["name"]
        password = form.cleaned_data["password"]
        email=form.cleaned_data.get("email")
        newUser = User(1,username,name,password,email)
        newUser.save()
        return redirect('mainPage')
     else:
        form=RegisterForm()
context = {
        "form" : form,
        "id":id
}
return render(request,"SignupLogin.html",context)

该行中的 User(1,username,name,password,email),1 是 id 号。当我删除它时,会抛出关于缺少变量 id 的错误。我怎样才能摆脱1?

标签: pythondjango

解决方案


只需将您的参数引入modelinit 函数即可。这可能会有所帮助:)

newUser = User(username=username, name=name, password=password, email=email)

如果你有nullable字段(null=True),你必须在模型上描述它。


推荐阅读