【问题标题】:Why i couldn't save the student's profile in the database为什么我无法在数据库中保存学生的个人资料
【发布时间】:2020-08-06 17:28:17
【问题描述】:

我是 django 的新手,正在尝试将自定义用户扩展到多个用户配置文件,当我尝试保存用户时,它显示“该组的学生已经存在”。 第一个用户注册正常,但是当我创建第二个用户时,它会引发错误

即使是用户模型也没有该组的成员资格 这是我的代码

models.py

class CustomUser(AbstractUser):
    USER_TYPE_CHOICES = (
      (1, 'student'),
      (2, 'parent'),
      (3, 'gard'),
      (4, 'teacher'),
      (5, 'secretary'),
      (6, 'supervisor'),
      (7, 'admin'),
    )
    is_active = models.BooleanField(default=True)
    user_type =models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES,null=True)

class Student(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='student_profile')
    group = models.OneToOneField(Group,related_name='student_group',on_delete=models.CASCADE,null=True)
    teacher = models.ManyToManyField(Teacher,related_name="student_teacher")

    def save(self,*args,**kwargs):
        self.user.is_active = False
        return super(Student,self).save(*args,**kwargs)


class Group(models.Model):
    name = models.CharField(max_length=255, unique=True)
    slug = models.SlugField(allow_unicode=True, unique=True)

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        retuen super().save(*args, **kwargs)  


这是我的 forms.py 文件

views.py


def student_signUpView(request,**kwargs):
    registered = False
    if request.method == 'POST':
        user_form = UserSignUpForm(request.POST)
        profile_form = StudentSignUpForm(request.POST)

        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save(commit=False)
            user.set_password(user_form.cleaned_data['password2'])
            print(user.user_type)
            user.save()
            profile = profile_form.save(commit=False)
            profile.user = user
            profile.exist = True
            profile.save()
            registered = True
        else:
            print(user_form.errors,profile_form.errors)
    else:
        user_form = UserSignUpForm()
        profile_form = StudentSignUpForm()
    return render(request, 'accounts/singup.html',{
            'registered':registered,
            'user_form': user_form,
            'profile_form': profile_form,
            })

这是错误

<ul class="errorlist"><li>user_type<ul class="errorlist"><li>This field is required.</li></ul></li></ul> <ul class="errorlist"><li>group<ul class="errorlist"><li>Student with this Group already exists.</li></ul></li></ul>
[06/Aug/2020 18:52:39] "POST /accounts/signup/Student/ HTTP/1.1" 200 7497
 <ul class="errorlist"><li>group<ul class="errorlist"><li>Student with this Group already exists.</li></ul></li></ul>

我不知道错误在哪里,我卡住了

【问题讨论】:

    标签: django django-models django-forms django-views


    【解决方案1】:

    每个小组只能有一个学生,models.OneToOneField 就是这样工作的。在学生模型中的组模型上使用models.ForeignKey,它允许您在组和多个学生之间建立关系。

    【讨论】:

    • 它成功了,错误被清除了谢谢你我编码的时候没注意
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2012-05-09
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多