Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 使用UserCreationForm的用户注册无法保存到数据库_Django_Sqlite_Django Forms_Django Views - Fatal编程技术网

Django 使用UserCreationForm的用户注册无法保存到数据库

Django 使用UserCreationForm的用户注册无法保存到数据库,django,sqlite,django-forms,django-views,Django,Sqlite,Django Forms,Django Views,我一直在学习Django,并试图理解如何扩展一些内置功能。为了做到这一点,我参考并尝试实现我在标准django管理项目中找到的指令 问题是,当我尝试将表单保存到数据库(包含sqlite3的db)时,没有记录任何内容。表单通过了is_valid检查,但是当我检查数据库时,没有向我的user或patients表添加任何内容 希望有人能指出哪里出了问题,谢谢 型号.py from django.db import models from django.contrib.auth.models impor

我一直在学习Django,并试图理解如何扩展一些内置功能。为了做到这一点,我参考并尝试实现我在标准django管理项目中找到的指令

问题是,当我尝试将表单保存到数据库(包含sqlite3的db)时,没有记录任何内容。表单通过了is_valid检查,但是当我检查数据库时,没有向我的user或patients表添加任何内容

希望有人能指出哪里出了问题,谢谢

型号.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    isPatient = models.BooleanField(default=False)

class Patient(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    age = models.PositiveIntegerField()
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.db import transaction
from .models import *

class RegisterPatient(UserCreationForm):
    age = forms.IntegerField()

    class Meta:
        model = User
        fields = UserCreationForm.Meta.fields + ("age")

    @transaction.atomic
    def save(self, commit=True):
        user = super(RegisterPatient, self).save(commit=False)
        user.isPatient = True
        user.save()
        patient = Patient.objects.create(user=user)
        patient.firstName.add(*self.cleaned_data.get('age'))
        patient.save()
def register(response):
    form = RegisterPatient(response.POST)
    if form.is_valid():
        print("is Valid") # < Code reaches here
        form.save
        return redirect("/")
AUTH_USER_MODEL = 'main.User'
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from . models import User

admin.site.register(User, UserAdmin)
forms.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    isPatient = models.BooleanField(default=False)

class Patient(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    age = models.PositiveIntegerField()
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.db import transaction
from .models import *

class RegisterPatient(UserCreationForm):
    age = forms.IntegerField()

    class Meta:
        model = User
        fields = UserCreationForm.Meta.fields + ("age")

    @transaction.atomic
    def save(self, commit=True):
        user = super(RegisterPatient, self).save(commit=False)
        user.isPatient = True
        user.save()
        patient = Patient.objects.create(user=user)
        patient.firstName.add(*self.cleaned_data.get('age'))
        patient.save()
def register(response):
    form = RegisterPatient(response.POST)
    if form.is_valid():
        print("is Valid") # < Code reaches here
        form.save
        return redirect("/")
AUTH_USER_MODEL = 'main.User'
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from . models import User

admin.site.register(User, UserAdmin)
视图.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    isPatient = models.BooleanField(default=False)

class Patient(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    age = models.PositiveIntegerField()
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.db import transaction
from .models import *

class RegisterPatient(UserCreationForm):
    age = forms.IntegerField()

    class Meta:
        model = User
        fields = UserCreationForm.Meta.fields + ("age")

    @transaction.atomic
    def save(self, commit=True):
        user = super(RegisterPatient, self).save(commit=False)
        user.isPatient = True
        user.save()
        patient = Patient.objects.create(user=user)
        patient.firstName.add(*self.cleaned_data.get('age'))
        patient.save()
def register(response):
    form = RegisterPatient(response.POST)
    if form.is_valid():
        print("is Valid") # < Code reaches here
        form.save
        return redirect("/")
AUTH_USER_MODEL = 'main.User'
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from . models import User

admin.site.register(User, UserAdmin)
admin.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    isPatient = models.BooleanField(default=False)

class Patient(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    age = models.PositiveIntegerField()
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.db import transaction
from .models import *

class RegisterPatient(UserCreationForm):
    age = forms.IntegerField()

    class Meta:
        model = User
        fields = UserCreationForm.Meta.fields + ("age")

    @transaction.atomic
    def save(self, commit=True):
        user = super(RegisterPatient, self).save(commit=False)
        user.isPatient = True
        user.save()
        patient = Patient.objects.create(user=user)
        patient.firstName.add(*self.cleaned_data.get('age'))
        patient.save()
def register(response):
    form = RegisterPatient(response.POST)
    if form.is_valid():
        print("is Valid") # < Code reaches here
        form.save
        return redirect("/")
AUTH_USER_MODEL = 'main.User'
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from . models import User

admin.site.register(User, UserAdmin)

您需要将
form.save
替换为
form.save()
。后者调用save函数,而前者不调用。

@forpas当我提交第一篇文章时,stackoverflow返回一条消息说有错误,所以我再试一次。我现在删除了以前的帖子。