【发布时间】:2018-08-14 07:16:17
【问题描述】:
我想知道在 Django 中定义多对多关系的最佳方法是什么。这种方式正确吗?
class Student(models.Model):
name = models.CharField(max_length=100)
class Teacher(models.Model):
name = models.CharField(max_length=100)
class StudentTeacher(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
extra_field = models.CharField(max_length=200)
使用through有什么好处?
class Student(models.Model):
name = models.CharField(max_length=100)
class Teacher(models.Model):
name = models.CharField(max_length=100)
students = models.ManyToManyField(Student, through='StudentTeacher')
class StudentTeacher(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
extra_field = models.CharField(max_length=200)
【问题讨论】:
-
差异在 Django 文档中得到了很好的描述:docs.djangoproject.com/en/2.1/topics/db/models/… 基本上,这两种方法都有效,但是,对于
through表,有一些额外的验证和有意义的限制,所以你不要不必考虑它们。 -
@petr 你应该重新发布你的评论作为答案。
标签: django django-models many-to-many