【问题标题】:Django foreign key problem in the model from legacy database遗留数据库模型中的Django外键问题
【发布时间】:2020-01-31 08:43:53
【问题描述】:

我在 PosgreSQL 数据库上创建了两个表。我已经引用了一个外键,但在 django 中我无法使其工作。 to_field 不工作。

注意父表organization_ID不是主键

在 django admin 中单击 DeviceDetailLine 链接时出现以下错误。

/admin/applications/devicedetailline/ 处的编程错误 列 device_dj_detail_line.org_id_id 不存在 第 1 行:选择“device_dj_detail_line”。“id”、“device_dj_detail_line”... ^ 提示:也许您的意思是引用列“device_dj_detail_line.org_id”。

class DeviceDetailHeader(models.Model):
    organization_ID = models.IntegerField(unique=True)
    organization_name = models.CharField(max_length=100)

    def __str__(self):
        return str(self.organization_name)

    class Meta:
        managed = False
        db_table = 'device_dj_detail_header'


class DeviceDetailLine(models.Model): 
    org_id = models.ForeignKey(DeviceDetailHeader,to_field='organization_ID', on_delete=models.CASCADE)
    label = models.CharField(max_length=250)
    value = models.CharField(max_length=250)
    display_flag = models.BooleanField(default=True)

   class Meta:
        managed = False
        db_table = 'device_dj_detail_line'

【问题讨论】:

标签: django django-models


【解决方案1】:

我通过添加db_column 修改了外键字段,现在它可以工作了。

application_id = models.ForeignKey(DeviceDetailHeader,to_field='application_id',
db_column='application_id',on_delete=models.CASCADE) 

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 2017-03-19
    • 2011-11-21
    • 2011-01-17
    • 2021-04-01
    • 1970-01-01
    • 2016-07-25
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多