我正在开发一个使用旧数据库的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。 你能给我一些片段或链接,我可以采取一些想法来解决这个问题
提前致谢
答案 0 :(得分: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