django.db.models .query_utils .InvalidQuery: необработанный запрос должен включать первичный ключ

#django #postgresql #django-models #django-queryset

#django #postgresql #django-models #django-queryset

Вопрос:

Я присвоил индивидуальное имя идентификатору (первичному ключу) и использовал в качестве строки, например

 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
  

Я искал это, но не получил ожидаемого ответа.
Заранее благодарю.

Комментарии:

1. Просто предположение, возможно, ORM нуждается в PK для создания объектов Python, поэтому попробуйте: ("""SELECT "custId", "custCity" FROM customer ... добавление pk к возвращаемым данным.

2. привет, @C14L Спасибо, я решил первую проблему, теперь остается вторая, пожалуйста, помогите мне выяснить и это.

Ответ №1:

На первый вопрос, который я решил, ответ на проблему

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

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