私はこのモデルを持っています:
class DataDefault(models.Model):
zbozi_id = models.IntegerField(primary_key=True, db_index=True)
zbozi_skupina = models.CharField(max_length=15, db_column='zbozi_skupina',
db_index=True, blank=True)
zbozi_vyrobce = models.CharField(max_length=15, db_column='zbozi_vyrobce',
db_index=True, blank=True)
def prepis_zbozi_vyrobce_url(self):
return MenuVyrobci.objects.get(
zbozi_vyrobce=self.zbozi_vyrobce
).zbozi_url_vyrobce
def prepis_zbozi_vyrobce_nazev(self):
return MenuVyrobci.objects.get(
zbozi_vyrobce=self.zbozi_vyrobce
).zbozi_vyrobce_nazev
def prepis_zbozi_skupina_url(self):
return MenuSkupiny.objects.get(
zbozi_skupina=self.zbozi_skupina
).zbozi_url_skupina
def prepis_zbozi_skupina_nazev(self):
return MenuSkupiny.objects.get(
zbozi_skupina=self.zbozi_skupina
).zbozi_skupina_nazev
class MenuSkupiny(models.Model):
zbozi_skupina = models.CharField(primary_key=True, max_length=15,
db_index=True)
zbozi_skupina_nazev = models.CharField(max_length=255, db_index=True)
zbozi_url_skupina = models.CharField(max_length=255, db_index=True)
class MenuVyrobci(models.Model):
zbozi_vyrobce = models.CharField(max_length=15, db_index=True,
primary_key=True)
zbozi_vyrobce_nazev = models.CharField(max_length=255, db_index=True)
zbozi_url_vyrobce = models.CharField(max_length=255, db_index=True)
しかし、使用するのは非常に遅いです。一度にすべてのデータを取得できるテーブルを結合するにはどうすればよいですか?
これ:
<a href="/{{ dat.prepis_zbozi_skupina_url }}">
{{ dat.prepis_zbozi_skupina_nazev }}</a> »
<a href="/{{ dat.prepis_zbozi_skupina_url }}/{{ dat.prepis_zbozi_vyrobce_url }}">
{{ dat.prepis_zbozi_vyrobce_nazev }}</a>
これを行います:
[sql] SELECT ... FROM `menu_skupiny` WHERE `menu_skupiny`.`zbozi_skupina` = 111
[sql] (13ms) Found 1 matching rows
[sql] SELECT ... FROM `menu_skupiny` WHERE `menu_skupiny`.`zbozi_skupina` = 111
[sql] (20ms) Found 1 matching rows
[sql] SELECT ... FROM `menu_skupiny` WHERE `menu_skupiny`.`zbozi_skupina` = 111
[sql] (16ms) Found 1 matching rows
[sql] SELECT ... FROM `menu_vyrobci` WHERE `menu_vyrobci`.`zbozi_vyrobce` = amd
[sql] (15ms) Found 1 matching rows
[sql] SELECT ... FROM `menu_vyrobci` WHERE `menu_vyrobci`.`zbozi_vyrobce` = amd
[sql] (13ms) Found 1 matching rows
そして良くない