通过扩展AbstractUser使用额外字段进行用户注册

时间:2018-01-24 17:26:43

标签: python django

之前我曾问过类似的事情,但是人们似乎并不理解我的要求,也许我只是不明白,但我真的想在这里寻找解决方案。所以我有一个扩展AbstractUser的学生模型,如:



class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('username', 'email', 'first_name', 'last_name', 'password')


class StudentForm(forms.ModelForm):
    class Meta:
        model = Student
        fields = ('phone', 'student_ID', 'photo')

class User(AbstractUser):
    pass


class Student(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    student_ID = models.CharField(unique=True, max_length=14,
                                  validators=[RegexValidator(regex='^.{14}$',
                                                             message='The ID needs to be 14 characters long.')])
    photo = models.ImageField(upload_to='students_images')
    phone = models.CharField(max_length=15, )

    def __str__(self):
        return self.user.username


@receiver(post_save, sender=User)
def create_user_student(sender, instance, created, **kwargs):
    if created:
        Student.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_user_student(sender, instance, **kwargs):
    instance.profile.save()




预期的输出是:

enter image description here

我只是不知道视图应该是什么样的。我过去想过什么,但没有什么可以保存的。我希望该学生无法注册,除非他填写所有这些字段:用户名,电子邮件,电话,student_ID等。但是,我希望学生的字段在用户由表单创建后可在数据库中编辑提交。我对此很陌生,但我真的需要完成这件事。

0 个答案:

没有答案