我在2个不同的文件中有2个表(用户,user_shifts),但它们之间具有外键关系 在用户中,表shift字段是班次表的外键,在字段中创建的班次表是用户表的外键。
但是当我运行服务器时,出现了一个错误 “无法导入用户”
类Users(models.Model):
id = models.AutoField(primary_key=True)
shift = models.ForeignKey(user_shifts)
class Meta:
managed = False
db_table = 'users'
class user_shifts(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=20)
status = models.IntegerField(default=1)
created_date = models.DateField(default=datetime.now().date())
created_by = models.ForeignKey(users)
class Meta:
managed = False
db_table = 'user_shifts'
答案 0 :(得分:0)
@ Troma78提供了足以说明您的代码出错的原因。您在Users
类中提到了类名user_shifts
不正确。相互引用时,还应使用user_shifts
中的M2M字段,而不是两个FK。
在类命名中也违反了编码样式。请参阅PEP8 https://www.python.org/dev/peps/pep-0008/
答案 1 :(得分:0)
这听起来像是循环导入,当这种情况发生时,python只是停止运行并声称无法从其所在的循环中导入某些内容。
您可以通过将字符串而不是类传递给ForeignKey字段来解决此问题,如下所示:
class User(models.Model):
shift = models.ForeignKey(to='shifts_app.UserShift')
class UserShift(models.Model):
created_by = models.ForeignKey(to='users_app.User')
并确保从模型文件中删除循环导入语句。