我正在开发一个应处理两种类型用户的项目。 普通用户和老师。
我创建了一个主要模型。实际上,我扩展了AbstractUser内置的django模型,并向其中添加了其他一些字段。额外的字段之一是is_teacher,它是BooleanField,默认值为False。对于用户注册,我从之前扩展的模型User创建了ModelForm。在注册时,我将is_teacher = False的默认值设置为指定该用户是普通用户。对于教师注册,is_teacher = True。用户和教师都可以登录并将其重定向到他们的面板,这是可以的。但是问题出在那之后。我需要其他的第三种模式。我需要在第三个模型中具有NORMAL用户和Teacher的ManyToMany字段;他们两个,但我只有一个模型。实际上,我并没有将用户和教师模型彼此分开。因此,我不知道如何指定与用户模型的ManyToMany关系和与教师的ManyToMany关系。我可以做的事情(也许)是创建两种类型的模型,一种用于用户,一种用于教师,关于这两种模型,我必须创建两个登录页面,两个配置文件和两个注册,然后也许我可以创建第三个模型就像我告诉你的那样问题是:对于用户和教师而言,有两个模型是真的吗?除此之外有什么解决办法吗?我是django的新手,请清楚地解释一下。
third_model的模型表格:
class RequestForm(forms.ModelForm):
class Meta:
model = ThirdModel
fields = ("height", "age", "address")
widgets = {
"user": "hidden"
}
用于在ThirdModel中保存数据的视图:
@login_required
def request_plan(request):
form = RequestForm(request.POST or None)
if form.is_valid():
user = request.POST.get('username')
form.save(commit=False)
form.save()
context = {
"request_form": form
}
return render(request, "plan/request.html", context)
class User(AbstractUser):
SEX_CHOICES = (
("male", "Male"),
("female", "Female")
)
sex = models.CharField(max_length=6, choices=SEX_CHOICES)
bio = models.CharField(max_length=100)
is_coach = models.BooleanField(max_length=100, default=False)
答案 0 :(得分:0)
您可以为“教师”创建另一个模型,“用户”具有一个“一对一”字段,并将仅教师数据保留在该模型中。您无需使用这种方法来创建其他登录方法,登录操作可以在基本用户模型上运行,并且可以将教师模型用于教师特定的操作。
var file = path.join(__dirname, result)
res.download(file, result, function(err){
if(err){
console.log("err", err)
}
})
答案 1 :(得分:0)
为什么不执行以下操作:
class ThirdModel(models.Model):
teachers = models.ManyToManyField(User, related_name='third_model_teachers')
normal_users = models.ManyToManyField(User, related_name='third_model_normals')
您有2个用户user1
和user2
您可以先添加为老师:
third_model.teachers.add(user1)
third_model.normal_users.add(user2)
在用户为老师的情况下获取所有Third_model。
user1.third_model_teachers.all()
要获得普通用户的所有Third_models
user2.third_model_normals.all()
如有任何疑问,请发表评论。