私はDjangoを初めて使いました。先生が下のLoginFormViewでログインすると、教師のメールを保存する方法を知りたいと思います。教師がログインした後、CreateClassFormを使用してクラスを作成できます。Djangoは別のフォームからデータを取得します
教師が新しいクラスを作成するときに、CreateClassFormの下にClassTeacherTeachesモデルをデータベースに格納しようとすると問題が発生します。 LoginFormViewから教師の電子メールを取得し、教師の電子メールを保存し、ClassTeacherTeachesモデルデータベースに自動増分クラスID(先生が新しいクラスを作成すると作成される)を取得するにはどうすればいいですか?
models.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)
form.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
)
)