【发布时间】:2016-09-25 02:23:44
【问题描述】:
我有 2 张桌子。用户和组。 1:多关系。每个用户只能属于一个组。
这是model.py。
class Group(models.Model):
group_name = models.CharField(max_length=150, blank=True, null=True)
group_description = models.TextField(blank=True, null=True)
group_creator = models.ForeignKey(User, models.DO_NOTHING)
class User(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
...
group = models.ForeignKey(Group, models.DO_NOTHING)
我遇到的问题是它们都相互引用,这在 MySQL 和 Oracle 中是可以接受的,但是在迁移时出现错误:
group_creator = models.ForeignKey(User, models.DO_NOTHING) NameError: 名称“用户”未定义
现在当我颠倒顺序时(因此,用户优先于组),我得到了
group = models.ForeignKey(Group, models.DO_NOTHING, blank=True, null=True) NameError: 名称“组”未定义
这变得非常令人沮丧。我有一些解决方法(将其设置为多:多并将创建者保留在 Group 类中),但在我开始破坏我的数据模型并移动数据之前,我想知道是否有人以前遇到过这个问题。你是怎么解决这个问题的?你真的需要改变你的数据模型吗?
【问题讨论】:
-
您可以在 ForeignKey 定义中的 User 和 Group 周围加上引号。例如:group = models.ForeignKey('Group', models.DO_NOTHING)