Django syncdb与ManytoMany字段通过类

时间:2014-04-30 16:52:24

标签: python django

我正在尝试为Django项目创建数据库表。 Arzt Fachbereich 之间存在ManyToMany关系,通过 ArztFachbereich

class Fachbereich(models.Model):
    id = models.IntegerField(db_column='FachID', primary_key=True)
    name = models.CharField(db_column='Name', unique=True, max_length=100)

class Arzt(models.Model):
    name = models.CharField(max_length=500)
    fachbereich = models.ManyToManyField(Fachbereich, through=ArztFachbereich)

class ArztFachbereich(FachbereichUndArztFachbereiche):
    arzt = models.ForeignKey(Arzt)
    fachbereich = models.ForeignKey(Fachbereich)

执行syncdb后,我得 NameError:名称'ArztFachbereich'未定义

当我改变Arzt和ArztFachbeeich的位置时,我只用Arzt得到了相同的NameError。 有没有办法做到这一点?或者我应该在MySQL中手动执行此操作吗?

1 个答案:

答案 0 :(得分:3)

您需要在传递给through参数的模型周围加上引号。

将其更改为:

fachbereich = models.ManyToManyField(Fachbereich, through='ArztFachbereich')

文档here中的示例。

编辑:

正如安德鲁在评论中所指出的那样,将模型放在引号中会使评估​​变得懒惰,因此ORM会在返回之前先解析所有类。