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