Django中的ManyToMany字段未在模型中创建

3 投票
1 回答
1940 浏览
提问于 2025-04-17 12:02

这是我为教师类写的模型。

class Teacher(Profile):
    class Meta:
        db_table = 'teacher'

    user = models.OneToOneField(User,
                                unique=True,
                                verbose_name=_('user'),
                                related_name='teacher')

    home_address =  models.CharField(_('home_address'), max_length=255, blank=True)
    home_phone =  models.CharField(_('home_phone'), max_length=30, blank=True)
    cell_phone =  models.CharField(_('cell_phone'), max_length=30, blank=True)
    experience =  models.IntegerField(default = 0)
    summary =  models.TextField(_('summary'), max_length=500, blank=True)
    subjects = models.ManyToManyField(Subjects, through='SubjectsIntermediate')

当我执行 manage.py syncdb 时,它确实创建了 teacher 表,里面有所有的字段,除了 subjects 这个字段。为什么 subjects 字段没有被创建呢?

1 个回答

8

因为多对多关系(ManyToMany)并不是一个字段,至少它不是一个在数据库中作为列存在的字段。它是一种关系,涉及到一个连接表。你会发现有一个名为 myapp_teacher_subjects 的表被创建了,这个表里有指向教师和科目的外键。

撰写回答