【问题标题】:django models to work with database views,tablesdjango 模型与数据库视图、表一起使用
【发布时间】:2011-02-15 22:34:09
【问题描述】:

我的数据库有表 books[isbn,name,author,availableNum],students[name,major,coursestaking],course[name,department,number,capacity,booksNeeded],department[name,courses] 我有一个小视图,其中包含上述所有 {courseName,booksRecommended,dept,countofstudents} 的字段。 在为视图创建模型时,我应该这样说。

class Lookup(models.Model):
    course = models.ForeignKey('course',db_column = 'name')
    booksRecommended = models.ForeignKey('books',db_column = 'isbn')
    dept = models.ForeignKey('department',db_column = 'name')
    studentcount = models.IntegerField()

我收到错误 ProgrammingError: 列 lookup.id 不存在。欢迎提出想法

【问题讨论】:

    标签: database django-models views


    【解决方案1】:

    您继承的 models.Model 假定表(或视图,在您的情况下)有一个名为 id 的列,用作主键,除非您已明确将其他列标记为是primary_key = True

    您的视图的 sql 或 ./manage.py inspectdb 应该可以帮助我们找到该视图的主键。

    【讨论】:

    • 这个视图没有主键。所以当我做 ./manage.py inspectdb 时我看不到。但是将其中一列(唯一的)设置为primary_key = True,确实解决了问题。谢谢Lakshman
    • 但是我应该在视图中明确指定关系,还是数据库视图已经知道约束我需要担心吗?
    • 如果主键的名字是id,django可以猜到,否则需要显式指定。
    • 我错过了这个 autoId 模式的事实让我失去了一些时间。将primary_key = True 添加到模型上的任何字段,以获得始终不为空而不是空白的视图解决了它!
    猜你喜欢
    • 1970-01-01
    • 2013-02-02
    • 2020-06-27
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多