【问题标题】:Foreign key relationship error in djangodjango中的外键关系错误
【发布时间】:2014-09-04 20:31:00
【问题描述】:

我正在开发一个使用旧数据库的 django 应用程序。该数据库在任何表中都没有主键或约束。这是我的两个模型

class Provider(models.Model):
    id_provider = models.IntegerField(blank=True, null=True, primary_key=True)
    name = models.CharField(max_length=50, blank=True)
    type = models.CharField(max_length=10, blank=True)
    signed = models.CharField(max_length=15, blank=True)
    currency = models.CharField(max_length=1, blank=True)
    class Meta:
        managed = False
        db_table = 'mpc_proveedores'

class Master(models.Model):
    id_provider = models.ForeignKey(Proveedor)
    anio = models.IntegerField(blank=True, null=True)
    mes = models.IntegerField(blank=True, null=True)
    nombre_prov = models.CharField(max_length=50, blank=True)
    tipo_conci = models.CharField(max_length=30, blank=True)
    f_recepcion = models.DateField(blank=True, null=True)
    e_recepcion = models.IntegerField(blank=True, null=True)
    class Meta:
        managed = False
        db_table = 'mpc_master'

我需要显示一个基于模型 Master 的表格,并且我需要显示提供者的名称而不是 id_provider。

这是我的看法

def monitorViewV2(request):
    table = MonitorTable(Master.objects.all())
    RequestConfig(request).configure(table)
    return render(request,'monitorv2.html',{'table': table})

当我尝试在浏览器中查看模板时,显示下一个错误

ORA-00904: "MPC_MASTER"."ID_PROVIDER_ID": 标识符无效

不知道这个错误是因为我在数据库中没有关系还是我需要在视图中创建一个函数来显示名称而不是id_provider。 你能给我一些 sn-p 或链接,我可以在其中提出一些想法来解决这个问题

提前致谢

【问题讨论】:

  • id_providermpc_master 表上的实际列名吗?
  • 是的,我使用 Python manage.py inspectdb > models.py
  • 并将Integer 列转换为ForeignKey?

标签: django django-models django-views


【解决方案1】:

Django 需要有一个用于外键关系的整数 DB 列,它将保存相关对象的 PK。在这种情况下,该列似乎是 id_provider,因此您应该在字段声明中指定它。我还会使用不同的字段名称以避免混淆:

provider = models.ForeignKey(Proveedor, db_column='id_provider')

文档提供了更多上下文: https://docs.djangoproject.com/en/1.7/ref/models/fields/#database-representation

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 2012-08-30
    • 2015-02-21
    • 2018-12-14
    • 2013-07-20
    • 2020-01-02
    • 2012-10-25
    相关资源
    最近更新 更多