Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Optimalkan kueri django untuk menarik kunci asing dan hubungan django-taggit

Dimungkinkan untuk menggunakan prefetch_related untuk mengambil tag, tetapi Anda harus menghindari properti 'tags', karena - seperti yang dikatakan jdi - ini adalah pengelola khusus daripada hubungan yang sebenarnya. Sebagai gantinya, Anda dapat melakukan:

actions = Action.objects.select_related('reoccurance').filter(complete=False)\ .prefetch_related('tagged_items__tag')

Sayangnya, action.tags.all dalam kode template Anda tidak akan menggunakan prefetch, dan pada akhirnya akan melakukan kuerinya sendiri - jadi Anda juga perlu mengambil langkah yang agak sulit untuk melewati pengelola 'tag' di sana:

{% for tagged_item in action.tagged_items.all %}
    <span>{{ tagged_item.tag }}</span>{% if not forloop.last %}, {% endif %}
{% endfor %}

(Ed.:jika Anda mendapatkan "'QuerySet' objek tidak memiliki atribut 'prefetch_related'", itu menunjukkan bahwa Anda menggunakan versi Django di bawah 1.4, di mana prefetch_related tidak tersedia.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi Canonical EntityFunctions.TruncateTime tidak ada di MYSQL

  2. Bagaimana saya bisa MEMILIH baris dengan MAX (Nilai kolom), PARTISI dengan kolom lain di MYSQL?

  3. Karakter Khusus dalam Nama Tabel MySQL

  4. SEC_TO_TIME() Contoh – MySQL

  5. Bagaimana cara kerja sesuatu OR DIE() di PHP?