#django #model #many-to-many
Вопрос:
Как это сделать при создании Student
экземпляра в базе данных будет создана связь между Student
экземпляром и рядом экземпляров Course
модели: -Каждая созданная модель учащегося должна иметь связь по умолчанию с некоторыми Course
экземплярами-Пользователь не может вручную посещать другие части сайта, чтобы добавить новую связь между Student
и Course
.
models.py:
class Student(models.Model):
name = models.CharField(max_length=249)
class Course(models.Model):
name = models.CharField(max_length=249)
student = models.ManyToManyField(Student, through='Connect')
class Connect(models.Model):
student = models.ForeignKey(Student, on_delete=models.SET_NULL, null=True)
course = models.ForeignKey(Course, on_delete=models.SET_NULL, null=True)
views.py:
class CreateStudent(LoginRequiredMixin, CreateView):
login_url = '/admin/'
redirect_field_name = 'index'
template_name = 'app/create_student.html'
model = Student
fields = ('name',)
Ответ №1:
Вам нужен код для создания отношений перед сохранением учащегося. Если вы придерживаетесь CreateView, вы можете заменить метод form_valid для изменения объекта student и создания других связанных объектов до сохранения объекта student.
Так что, на ваш взгляд, что-то вроде
def form_valid(self, form):
self.object = form.save( commit=False )
# code to create related objects goes here
# commit the student to the database
self.object.save()
return HttpResponseRedirect(self.get_success_url())