首页 > 解决方案 > Django 视图:postgres 物化视图可通过 get 但不能通过过滤器访问(两个查询集)

问题描述

我尝试在 Django views.py 中过滤具体化的 postgres 视图。数据库和视图是用 postgres 创建的。我可以过滤代表一对多关系的视图,并且可以使用 get (queryset) 访问代表多对多关系的视图。但我无法过滤那些代表多对多关系的视图。模型是用 inspectdb 创建的。这是一个 postgis 遗留数据库。

我如何过滤这些视图?

模型.py

    fid = models.AutoField(primary_key=True)
    id_dokument = models.IntegerField(blank=True, null=True)
    dokument = models.CharField(max_length=50, blank=True, null=True)
    datei = models.CharField(max_length=100, blank=True, null=True)
    beschreibung = models.CharField(max_length=1024, blank=True, null=True)
    datum = models.DateField(blank=True, null=True)
    person = models.CharField(max_length=50, blank=True, null=True)
    dokumenttyp = models.CharField(max_length=30, blank=True, null=True)
    id_objekt = models.IntegerField(blank=True, null=True)
    objekt = models.CharField(max_length=50, blank=True, null=True)

    class Meta:
        managed = False  # Created from a view. Don't remove.
        db_table = 'objekt_dokumente_rel'

视图.py

dokumente = ObjektDokumenteRel.objects.using('db').filter(id_objekt=fid)

如果用 get 替换过滤器,我会收到一个对象(如预期的那样)。

标签: djangopostgresqldjango-viewsgeodjangomaterialized-views

解决方案


将 __exact 添加到 id_objektdokumente = ObjektDokumenteRel.objects.using('db').filter(id_objekt__exact=fid)可以解决问题。有谁知道为什么?


推荐阅读