Как создать зависимости m2m?

#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.

Классный CBV CreateView

Так что, на ваш взгляд, что-то вроде

 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())