【发布时间】:2021-07-23 12:17:40
【问题描述】:
我有一个通过外键关联 2 家公司的数据库视图,如下所示:
数据库公司视图:
company1_id FK to Company,
company2_id FK to Company,
description text
where
--- some company criteria ---
我在 Django 中尝试使用非托管模型:
class CompanyView(models.Model):
company1 = models.ForeignKey(Company, related_name='company1_id', parent_link=True)
company2 = models.ForeignKey(Company, related_name='company2_id', parent_link=True)
description = models.TextField()
class Meta:
managed = False
db_table = 'company_view'
对于我拥有的 Admin 类:
@admin.register(models.CompanyView)
class CompanyViewAdmin(AdvancedModelAdmin):
list_display = ('company1', 'company2', 'description')
但管理页面抛出异常,如:
psycopg2.errors.UndefinedColumn:company_view.id 列不存在
拥有一个主 id 键是没有意义的,那么有什么办法可以解决这个问题吗? 谢谢
【问题讨论】:
-
我看不到添加 PK 的缺点。 AFAIK 你不能在没有 PK 的情况下使用 django admin。
-
谢谢。我通过制作
unique_together = ('company1', 'company2')来尝试此操作,然后迁移将其转换为 id 字段,该字段在视图中不存在,所以死路一条:(
标签: django django-models view