我正在尝试为 Django 项目创建数据库表。通过 ArztFachbereich,Arzt 和 Fachbereich 之间存在多对多关系。
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 中手动执行此操作?
最佳答案
您需要在传递给 through
参数的模型周围加上引号。
将其更改为:
fachbereich = models.ManyToManyField(Fachbereich, through='ArztFachbereich')
文档中的示例 here .
编辑:
正如 Andrew 在评论中指出的,将模型放在引号中会使评估变得懒惰,因此 ORM 将首先解析所有类,然后再返回。
关于python - Django 通过类与 ManytoMany 字段进行同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23393843/