1

私はこのモデルを持っています:

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

そして良くない

4

0 に答える 0