Найти - Пользователи
Полная версия: Many2Many
Начало » Django » Many2Many
1
offline
Столкнулся с проблемой, есть продукт, привязаный с помощью ManyToMany к категории. Хочу вытащить все продукты которые находятся и в категории Х и в категории У. Но так как ManyToMany хранит каждую связь с продуктом на отдельной строчке, то через Q выбрать не получится как я понял.

Для примера дам вариант который хочу сделать, но он естественно не рабочий иначе я бы не спрашивал ))

category1 = Category.objects.get(slug=brand)
category2 = Category.objects.get(slug=typeof)

products1 = Product.objects.filter(category=category1, category=category2)


Ещё была идея сделать так
category1 = Category.objects.get(slug=brand)
category2 = Category.objects.get(slug=typeof)

products1 = category1.product_set.all()
products2 = category2.product_set.all()
products = set(products1) & set(products2)

но тут тоже не получается, объекты по идее разные потому как id у строчек разные..


Как быть?
Александр Кошелев
products1 = Product.objects.filter( Q( category=category1 ) | Q(category=category2) )
так не работеат?
PS: почему игнорируешь тег ?
offline
Нет, так он выбирает все продукты которые входят в одну из двух категорий, а мне надо в две.
offline
Вроде сделал, но через попу явно..

def root2(request, slug):
brand, typeof = slug.split("-")
try:
category1 = Category.objects.get(slug=brand)
category2 = Category.objects.get(slug=typeof)
except IndexError:
return bad_or_missing(request, _('The category you have requested does not exist.'))
products1 = Product.objects.filter(category=category1)
products2 = Product.objects.filter(category=category2)
prod = []
for i in products1:
for z in products2:
if i.id == z.id:
prod.append(i)

return render_to_response('base_categories.html', {'products': prod}, RequestContext(request))
На стиль кодинга не смотрите, это не я, это Satchmo ))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB