我是 Django 的新手,想知道当老师使用如下所示的 LoginFormView 登录时如何保存老师的电子邮件。教师登录后,可以使用 CreateClassForm 创建班级。
当老师创建新班级时,我在尝试将 ClassTeacherTeaches 模型存储到 CreateClassForm 下的数据库时遇到问题。如何从 LoginFormView 检索教师的电子邮件并存储教师的电子邮件并将自动递增的班级 ID(这是在教师创建新班级后创建)到 ClassTeacherTeaches 模型数据库中?
模型.py
class User(AbstractBaseUser):
email = models.EmailField(max_length=100, primary_key=True)
password = models.CharField(max_length=100, null=False)
full_name = models.CharField(max_length=100, default="", null=False)
USERNAME_FIELD = 'email'
def get_full_name(self):
return self.full_name
def set_full_name(self, fname):
self.full_name = fname
def get_short_name(self):
pass
def get_full_name(self):
pass
class Class(models.Model):
classid = models.AutoField(primary_key=True)
class_name = models.CharField(max_length=100, null=False)
class ClassTeacherTeaches(models.Model):
class Meta:
unique_together = (('classid', 'teacher_email'),)
classid = models.ForeignKey(Class)
teacher_email = models.ForeignKey(User)
表单.py
class CreateClassForm(forms.Form):
class_name = forms.CharField(widget=forms.widgets.TextInput(attrs={'placeholder': 'Module Code'}), label='')
class Meta:
model = Class
fields = ['class_name']
def save(self, commit=True):
data = self.cleaned_data
module = Class(class_name=data['class_name'])
if commit:
module.save()
return module
class LoginFormView(FormView):
form_class = LoginForm
template_name = 'App/index.html'
success_url = '/'
def post(self, request, *args, **kwargs):
login_form = self.form_class(request.POST)
register_form = RegistrationForm()
if login_form.is_valid():
auth = EmailAuthBackend()
user = auth.authenticate(email=request.POST['email'], password=request.POST['password'])
if user is not None:
django_login(request, user)
return HttpResponseRedirect("../instructormodule")
else:
return self.render_to_response(
self.get_context_data(
login_form=login_form,
register_form=register_form
)
)
您不会“从登录表单中检索教师的电子邮件”。教师已登录; 因此,您从登录的用户检索电子邮件。
class CreateClassForm(forms.Form):
...
def save(self, commit=True):
data = self.cleaned_data
module = Class(class_name=data['class_name'])
module.teacher_email = self.request.user
if commit:
module.save()
return module
请注意,调用该字段是没有意义的teacher_email
;它指向整个 User 模型,所以它应该被称为 just teacher
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句