【问题标题】:How to create m2m dependencies?如何创建 m2m 依赖项?
【发布时间】:2021-09-07 00:58:10
【问题描述】:

如何在数据库中创建Student实例时,会在Student实例和Course模型的多个实例之间建立关系: - 每个实例化的学生模型必须与某些Course 实例有默认关系 -用户不能手动访问站点的其他部分来添加StudentCourse之间的新关系。

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',)

【问题讨论】:

    标签: django model many-to-many


    【解决方案1】:

    在保存 Student 之前,您需要代码来创建关系。如果您坚持使用 CreateView,您可能会替换 form_valid 方法来修改学生对象并在保存学生对象之前创建其他关联对象。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 2012-07-01
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多