(django) Внешний ключ не записывается и получает ошибку целостности
Я пытаюсь создать проект на python с django для записи имени пользователя (активной сессии), quizid, questionid, studentanswer в базу данных mysql, но получаю ошибку целостности > "Column 'username_id' cannot be null"
models.py
class Quiz(models.Model):
questionid = models.IntegerField(null=False)
quizid = models.AutoField(primary_key=True)
subjectname = models.CharField(max_length=50)
question = models.CharField(max_length=50)
correctanswer = models.CharField(max_length=50)
eqpoints = models.IntegerField()
student = models.ManyToManyField("self", through="StudentAnswer")
teacher = models.ManyToManyField(Teacher)
class StudentAnswer(models.Model):
username = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
questionid = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='quiz_question')
quizid = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='quiz_id')
studentanswer = models.CharField(max_length=50)
forms.py
class StudentAnswerForm(ModelForm):
questionid = forms.ModelChoiceField(widget=forms.Select(), queryset=Quiz.objects.only('questionid'))
studentanswer = forms.CharField(widget=forms.TextInput())
quizid = forms.ModelChoiceField(widget=forms.Select(), queryset=Quiz.objects.only('quizid'))
class Meta:
model = StudentAnswer
fields = ['quizid','questionid','studentanswer']
views.py
class AnswerQuiz(View):
template = 'ansQuiz.html'
def get(self, request):
form = StudentAnswerForm()
request.session['visits'] = int(request.session.get('visits', 0)) + 1
quiz = Quiz.objects.all() #get data from all objects on Quiz model
return render(request, self.template,{'quiz':quiz, 'form':form})
def post(self,request):
if request.method == 'POST':
form = StudentAnswerForm(request.POST)
if form.is_valid():
form.instance.user = request.user
form.save()
return render(request, self.template, {'form':form})