def setUp(self): """ Создание категорий и товаров для тестов. """ cls = type(self) # Цикл создания категорий и принадлежащих к ним товаров, с указанием # цены for index_ in xrange(cls.CATEGORY_NUM): with atomic(): new_category = Category.objects.create( name=cls.gen_category_name(index_ + 1)) new_category.save() for index2_ in xrange(cls.PRODUCT_NUM_START + index_ * 2): new_product_price = 90 + index2_ * 2 new_product = Product(category=new_category, name=cls.gen_product_name(index2_), price=new_product_price) new_product.save() # Для сверки self._products_num = Product.objects.count() self._products_more_100_num = Product.objects\ .filter(price__gte=100).count() category_ids = [item.pk for item in Category.objects\ .annotate(num_products_total=Count('product', distinct=True))\ .filter(num_products_total__gt=10)] self._products_more_100_num_second = Product.objects\ .filter(price__gte=100).filter(category_id__in=category_ids)\ .count()
def run(self): cls = type(self) # Цикл создания категорий и принадлежащих к ним товаров, с указанием # цены for index_ in xrange(*cls.CATEGORY_TOTAL_RANGE): with atomic(): new_category = Category.objects.create( name=cls.gen_category_name(index_)) new_category.save() for index2_ in xrange( 1, random.choice(range(*cls.PRODUCT_TOTAL_RANGE))): # Цена продукта new_product_price = random.choice(range(*cls.PRICE_RANGE)) new_product = Product(category=new_category, name=cls.gen_product_name(index2_), price=new_product_price) new_product.save()