Python 2 django型号主键和外键

Python 2 django型号主键和外键,python,django,sqlite,django-models,Python,Django,Sqlite,Django Models,我需要设置一个带有主键和外键的模型。第二个模型也是如此 默认情况下,第一个模型将tcu_id设置为主键: class Tcu(models.Model): imei = models.CharField(max_length=30, unique=True) 第二个模型的主键设置为True,外键来自tcu模型: class Sim(models.Model): phone_num = models.CharField(max_length=30, primary_key=Tru

我需要设置一个带有主键和外键的模型。第二个模型也是如此

默认情况下,第一个模型将tcu_id设置为主键:

class Tcu(models.Model):
    imei = models.CharField(max_length=30, unique=True)
第二个模型的主键设置为True,外键来自tcu模型:

class Sim(models.Model):
    phone_num = models.CharField(max_length=30, primary_key=True)
    tcu = models.ForeignKey(Tcu, null=True, blank=True)
这工作正常,但当我尝试向第一个模型添加外键时,问题出现了:

 class Tcu(models.Model):
        imei = models.CharField(max_length=30, unique=True)
        phone_num = models.ForeignKey(Sim, null=True, blank=True)
在tcu phone_num=型号。外键(Sim) 名称错误:未定义名称“Sim”

状态:

如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身

因此,在您的情况下,这将是:

class Tcu(models.Model):
    imei = models.CharField(max_length=30, unique=True)
    phone_num = models.ForeignKey('Sim', blank = True)

class Sim(models.Model):
    phone_num = models.CharField(max_length=30, primary_key=True)
    tcu = models.ForeignKey(Tcu, null=True, blank=True)
各国:

如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身

因此,在您的情况下,这将是:

class Tcu(models.Model):
    imei = models.CharField(max_length=30, unique=True)
    phone_num = models.ForeignKey('Sim', blank = True)

class Sim(models.Model):
    phone_num = models.CharField(max_length=30, primary_key=True)
    tcu = models.ForeignKey(Tcu, null=True, blank=True)

你导入模型Sim卡了吗?我真的不明白你为什么要在这里双向使用FKs。那没有道理。Sim卡和Tcu之间的实际关系是什么?你说得对!谢谢你!我正在我的本地主机上测试一些功能。你导入了模型Sim吗?我真的不明白你为什么要在这两个方向上使用FKs。那没有道理。Sim卡和Tcu之间的实际关系是什么?你说得对!谢谢你!我正在本地主机上测试一些功能