django-从前端添加新用户

时间:2015-07-09 06:43:27

标签: django-users

我一直在学习django一个月,我觉得最好的方法是做一个项目。我选择了一个简单的学校管理项目,但我有点堆积。该项目有不同类别的用户,即学生和管理员。学校管理员应该登录并添加新学生,学生也应该登录并可以编辑他们的个人资料。我用User作为foreignKey和category

创建了一个nother app UserProfile
class Category(models.Model):
    name=models.CharField(max_length=200)
    def __unicode__(self):
        return self.name

class UserProfile(models.Model):
    user=models.OneToOneField(User)
    category=models.ForeignKey(Category)

def __unicode__(self):
    return "%s "%(self.category.name)

我从管理网站添加了示例用户,并且到目前为止我能够将学校管理员重定向到他应该添加新学生的前端仪表板。学生登录后也会被重定向到学生页面。我有一个共同的登录表单。 我的第一个问题是,我是否应该像下面的学生模型中那样使用用户作为标准?

class Student(models.Model):
    user=models.OneToOneField(User)
    regNum=models.CharField(max_length=200, unique=True)
    lastName=models.CharField(max_length=200)
    otherNames=models.CharField(max_length=200)
    dateOfBirth=models.DateField()
    idNo=models.IntegerField(default=123456)
    email=models.EmailField()
    contact=models.IntegerField(default=071234567)
    HomeTown=models.CharField(max_length=200)
  1. 我如何处理添加新学生,以便管理员能够添加学生详细信息,包括学生登录密码,同时为学生分配一个类别。请注意,这是django的新功能。感谢

1 个答案:

答案 0 :(得分:0)

您需要创建一个用户实例,并将其与学生详细信息一起添加到学生中。

如下所述:

https://docs.djangoproject.com/en/1.8/ref/contrib/auth/#django.contrib.auth.models.UserManager.create_user

在这里: Creating users django 1.8

示例:

from django.contrib.auth.models import User
#place this after your form is valid 
form=StudentForm(request.POST)
if form.is_valid():
     #create student
     username=form.cleaned_data['username']
     email=form.cleaned_data['email']
     password=form.cleaned_data['password']
     user=User.objects.create_user(username=username,email=email,password=password)
     #create your userprofile here
     ............
     ............
     #using the user instance now create your student
     student=Student.objects.create(user=user,regNum=''......)
     .............
..............