PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да използвам подзаявка в django?

Това може да не е точно това, което търсите, но може да ви доближи. Разгледайте анотацията на Django .

Ето пример за нещо, което може да помогне:

  from django.db.models import Max
  Customer.objects.all().annotate(most_recent_purchase=Max('purchase__date'))

Това ще ви даде списък с моделите на вашите клиенти, всеки от които ще има нов атрибут, наречен „most_recent_purchase“ и ще съдържа датата, на която са направили последната си покупка. Полученият sql изглежда така:

SELECT "demo_customer"."id", 
       "demo_customer"."user_id", 
       MAX("demo_purchase"."date") AS "most_recent_purchase"
FROM "demo_customer"
LEFT OUTER JOIN "demo_purchase" ON ("demo_customer"."id" = "demo_purchase"."customer_id")
GROUP BY "demo_customer"."id",
         "demo_customer"."user_id"

Друг вариант е да добавите свойство към модела на вашия клиент, което би изглеждало по следния начин:

  @property
  def latest_purchase(self):
    return self.purchase_set.order_by('-date')[0]

Очевидно ще трябва да се справите със случая, когато няма никакви покупки в този имот и това потенциално няма да се представи много добре (тъй като ще изпълнявате една заявка за всеки клиент, за да получите последната си покупка).

Използвал съм и двете от тези техники в миналото и двете са работили добре в различни ситуации. Надявам се това да помогне. Успех!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Приспособлението на Django се зарежда много бавно

  2. Mac psql/readline - Библиотеката не е заредена

  3. PostgreSQL към XML с 3 таблици

  4. PG::DuplicateTable:ГРЕШКА:публикациите за връзка вече съществуват

  5. Как да импортирате голям XML файл (~10GB) в PostgreSQL