Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. cs = City.objects.all().prefetch_related('shops')
  2.  
  3. SELECT ••• FROM `catalog_city`
  4. SELECT ••• FROM `catalog_shop` WHERE `catalog_shop`.`city_id` IN (1, 2, 3, 4, 5, 6)
  5. SELECT ••• FROM `catalog_shop` INNER JOIN `catalog_city` ON (`catalog_shop`.`city_id` = `catalog_city`.`id`) WHERE `catalog_shop`.`city_id` = 1
  6. SELECT ••• FROM `catalog_shop` INNER JOIN `catalog_city` ON (`catalog_shop`.`city_id` = `catalog_city`.`id`) WHERE `catalog_shop`.`city_id` = 2
  7.  
  8. class City(models.Model):
  9. name = models.CharField(verbose_name='город', max_length=200)
  10. code = models.IntegerField(verbose_name='код города')
  11.  
  12. def __str__(self):
  13. return self.name
  14.  
  15. class Meta:
  16. verbose_name = "город"
  17. verbose_name_plural = "города"
  18.  
  19.  
  20. class Shop(models.Model):
  21. adress = models.CharField(max_length=255, verbose_name="адрес")
  22. phone = models.CharField(max_length=150, verbose_name="телефон")
  23. map_script = models.TextField(verbose_name="скрипт карты")
  24. worktime = models.CharField(max_length=255, verbose_name="режим работы")
  25. stock = models.OneToOneField(Stock, related_name='sshop')
  26. firm = models.OneToOneField(Firm, related_name='fshop')
  27. city = models.ForeignKey(City, related_name='shops')
  28. created_at = models.DateTimeField(auto_now_add=True)
  29. updated_at = models.DateTimeField(auto_now=True)
  30. objects = ShopManager()
  31.  
  32. def __str__(self):
  33. return "%s" % (self.adress)
  34.  
  35. def get_absolute_url(self):
  36. return reverse('shop_detail', kwargs={'pk': self.pk})
  37.  
  38. class Meta:
  39. verbose_name = "магазин"
  40. verbose_name_plural = "магазины"
  41.  
  42. def cities_shops(request):
  43. shops = Shop.objects.all().prefetch_related('city')
  44. cities = {}
  45. for shop in shops:
  46. if shop.city.pk not in cities.keys():
  47. cities[shop.city.pk] = {'name': shop.city.name, 'code': shop.city.code, 'shops': []}
  48. cities[shop.city.pk]['shops'].append(shop)
  49.  
  50. cs = City.objects.all().prefetch_related(Prefetch('shops', queryset=Shop.objects.all()))
  51. return {'citys': cs, 'cities': cities}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement