私はそのようなモデルを持っています:
class Category(Model):
...
type = models.CharField(max_length=255, choices=settings.CATEGORIES)
class Product(models.Model):
...
categories = models.ManyToManyField(Category)
ユーザーが入力したカテゴリのリストがあります(形式は任意です):
c = [<Category: G, type: producer>, <Category: L, type: producer>, <Category: Teen, type: age>, <Category: Man, type: sex>]
ここで、カテゴリ内のすべての製品に、タイプ「プロデューサー」の「G」または「L」、タイプ「年齢」の「ティーン」、タイプ「性別」の「男性」が必要です。たとえば、次のクエリセットを実行しています。
Product.objects.filter(Q(categories=c[0])|Q(categories=c[1]), Q(categories=c[2]), Q(categories=c[3])
そのようなクエリがある:
SELECT "shop_product"."id", "shop_product"."title", "shop_product"."description",
"shop_product"."price", "shop_product"."code", "shop_product"."stored_count",
"shop_product"."sold_count", "shop_product"."added_date" FROM "shop_product"
INNER JOIN "shop_product_categories" ON ("shop_product"."id" =
"shop_product_categories"."product_id") WHERE
(("shop_product_categories"."category_id" = 1 OR
"shop_product_categories"."category_id" = 2) AND
"shop_product_categories"."category_id" = 4 AND
"shop_product_categories"."category_id" = 6)
そのような要件に適合するオブジェクトが少なくとも1つありますが、querysetは何も返しません。何か提案はありますか?