Я создал метакласс UniqueConstraint для своей модели, и он работает, когда я тестирую его, намеренно создавая дубликат, но получаю страницу с ошибкой вместо того, чтобы перенаправляться обратно на исходную страницу.Куда мне вставить код, чтобы вернуться на страницу, на которой я только что находился?
Я предполагаю, что проблема в представлении, но я понятия не имею, какой код поместить туда, и документы Django не содержат ничегоссылаясь на эту проблему.
Модель:
class StudentScheduledClass(models.Model):
student = models.ForeignKey("users.User", on_delete=models.CASCADE, db_column="Student")
scheduled_class = models.ForeignKey("ScheduledClass", on_delete=models.CASCADE, db_column="ScheduledClass")
grade = models.FloatField(db_column="Grade", blank=True, null=True)
class Meta:
managed = True
db_table = "StudentScheduledClass"
verbose_name_plural = "StudentsScheduledClasses"
constraints = [
models.UniqueConstraint(fields=['student', 'scheduled_class'], name='student scheduled class restraint')
]
Просмотр:
class StudentScheduledClassCreateView(LoginRequiredMixin, CreateView):
model = StudentScheduledClass
context_object_name = "student_scheduled_class"
fields = ["student"]
def form_valid(self, form):
scheduled_class = self.kwargs["scheduled_class"]
form.instance.scheduled_class = ScheduledClass(scheduled_class)
return super().form_valid(form)
def get_success_url(self):
scheduled_class = self.kwargs["scheduled_class"]
return reverse("scheduled-class-detail", args={scheduled_class})
Я хотел бы просто вернуться на исходную страницу с сообщением об ошибке,вместо этого я получаю эту ошибку целостности:
IntegrityError at /classes/student_scheduled_class_create/1/
UNIQUE constraint failed: StudentScheduledClass.Student, StudentScheduledClass.ScheduledClass
Request Method: POST
Request URL: http://localhost:8000/classes/student_scheduled_class_create/1/
Django Version: 2.2.2
Exception Type: IntegrityError
Exception Value:
UNIQUE constraint failed: StudentScheduledClass.Student, StudentScheduledClass.ScheduledClass