如何从postgresql视图表中获取要显示的对象列表

Dan*_*cia 2 django postgresql django-models django-views

这是视图表的模型.

class QryDescChar(models.Model): 
 iid_id = models.IntegerField()
 cid_id = models.IntegerField()
 cs = models.CharField(max_length=10)
 cid = models.IntegerField()
 charname = models.CharField(max_length=50)
 class Meta:
     db_table = u'qry_desc_char'
Run Code Online (Sandbox Code Playgroud)

这是我用来创建表的SQL

CREATE VIEW qry_desc_char as
 SELECT  
    tbl_desc.iid_id,
    tbl_desc.cid_id,
    tbl_desc.cs,
    tbl_char.cid,
    tbl_char.charname
FROM tbl_desC,tbl_char 
WHERE tbl_desc.cid_id = tbl_char.cid;
Run Code Online (Sandbox Code Playgroud)

我不知道我是否需要模型或视图中的功能或两者兼而有之.我想从该数据库中获取一个对象列表来显示它.这可能很简单,但是在Django和python中我是新手,所以我遇到了一些问题

Mon*_*lik 6

Django 1.1带来了一个你可能觉得有用的新功能.你应该可以这样做:

 class QryDescChar(models.Model): 
     iid_id = models.IntegerField()
     cid_id = models.IntegerField()
     cs = models.CharField(max_length=10)
     cid = models.IntegerField()
     charname = models.CharField(max_length=50)
 class Meta:
     db_table = u'qry_desc_char'
     managed = False
Run Code Online (Sandbox Code Playgroud)

托管Meta类选项的文档在这里.相关报价:

如果为False,则不会对此模型执行数据库表创建或删除操作.如果模型表示通过其他方式创建的现有表或数据库视图,则此选项非常有用.当托管为False时,这是唯一的区别.模型处理的所有其他方面与正常情况完全相同.

完成后,您应该能够正常使用您的模型.要获取对象列表,您需要执行以下操作:

qry_desc_char_list = QryDescChar.objects.all()
Run Code Online (Sandbox Code Playgroud)

要将列表实际放入模板中,您可能需要查看通用视图,特别是object_list视图.