【问题标题】:2 django models primary key and foreign key2 django 模型主键和外键
【发布时间】:2015-12-16 10:12:19
【问题描述】:

我需要设置一个带有主键和外键的模型。与第二个模型相同。

第一个模型默认将 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 = models.ForeignKey(Sim) NameError: 名称“Sim”未定义

【问题讨论】:

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

标签: python django sqlite django-models


【解决方案1】:

Django documentation for the ForeignKey field 声明:

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

所以在你的情况下,那将是:

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)

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 2013-05-27
    • 2018-01-10
    • 2020-11-13
    • 1970-01-01
    • 2012-02-15
    • 2013-01-17
    • 2010-11-10
    • 2021-05-04
    相关资源
    最近更新 更多