我一直在学习django一个月,我觉得最好的方法是做一个项目。我选择了一个简单的学校管理项目,但我有点堆积。该项目有不同类别的用户,即学生和管理员。学校管理员应该登录并添加新学生,学生也应该登录并可以编辑他们的个人资料。我用User作为foreignKey和category
创建了一个nother app UserProfileclass 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)
答案 0 :(得分:0)
您需要创建一个用户实例,并将其与学生详细信息一起添加到学生中。
如下所述:
在这里: 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=''......)
.............
..............