【问题标题】:django.db.models.query_utils.InvalidQuery: Raw query must include the primary keydjango.db.models.query_utils.InvalidQuery:原始查询必须包含主键
【发布时间】:2021-02-19 06:56:33
【问题描述】:

我已经为 id(primary key) 提供了自定义名称并用作字符串,例如

custId=models.CharField(primary_key=True,max_length=10)

我正在使用原始查询来执行 SQL。但是Django给了我一个错误

raise InvalidQuery('Raw query must include the primary key')
django.db.models.query_utils.InvalidQuery: Raw query must include the primary key.

查询是

cust=Customer.objects.raw("""SELECT "custCity" FROM customer where "custId"= 'Cust101'  """)
for c in cust:
   print(c)

此外,该表有一个外键也显示错误。 在我的事务表中,orderId 是一个外键。

django.db.utils.ProgrammingError: relation "transaction" does not exist
LINE 1: select * from Transaction

我已经搜索过这个,但没有得到预期的答案。 提前谢谢你。

【问题讨论】:

  • 只是猜测,也许 ORM 需要 PK 来构建 Python 对象,所以尝试:("""SELECT "custId", "custCity" FROM customer ... 将 pk 添加到返回的数据中。
  • 嘿@C14L 谢谢我已经解决了第一个问题现在第二个问题还剩下请帮我找出那个问题。

标签: django postgresql django-models django-queryset


【解决方案1】:

对于第一个问题,我已经解决了一个问题 答案是

>>>cust=Customer.objects.raw("""SELECT "custId" , "custCity" FROM customer where "custId"= 'Cust101'  """)

>>> for c in cust:
`...     print(c)`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2014-01-21
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 2018-11-14
    • 1970-01-01
    相关资源
    最近更新 更多