python - Django 通过类与 ManytoMany 字段进行同步

标签 python django

我正在尝试为 Django 项目创建数据库表。通过 ArztFachbereichArztFachbereich 之间存在多对多关系。

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/

相关文章:

django - 如何按数字显示月份名称?

Django 自定义模板标签和模板加载器

python - 使用 Holt-winters、ARIMA、指数平滑等在 Python 中预测时间序列值

python - 我的代数求解器哪里出了问题?

python - XGBoost 回归 - 预测值超出训练范围

python - 从 2 个模型创建表单 python django : [Errno 2] No such file or directory

python - 让Python程序运行另一个Python程序并让它们同时运行?

python - Pandas fillna 使用 groupby

python - 在 django orm 查询中指定 sql 表达式作为列名

django - Heroku 临时存储、Sendgrid 和附件