我有以下数据结构:FruitObject与领域FruitType和FruitColor。另一方面,我有FruitOffer(这是用户输入)。它与FruitObject相同,并由用户输入(某种需求支持配对系统;我们输入FruitObjects和用户输入FruitOffers;任务是配对它们并查看用户提供给我们的内容 - 选择只有特定用户的FruitObjects等于FruitOffers)。Django的 - __in数据库查询
所以逻辑上我用__in选择来获得所需的数据:
select = FruitObject.objects.filter(FruitType__in=FruitOffer.objects.filter(user=request.user).values("FruitType"))
现在到了困难的部分,我 - 我需要FruitColor添加到选择并获得不少一对多的选择这符合两个条件(每个fruitObject得到offerObject是类型和颜色的两个)
select = FruitObject.objects.filter(FruitType__in=FruitOffer.objects.filter(user=request.user).values("FruitType"), FruitColor__in=FruitOffer.objects.filter(user=request.user).values("FruitColor"))
但逗号更像或在这种情况下操作,并返回我的一切VAL具有特定类型或特定颜色的ues。
如何将和条件添加到__in select?如果我想添加更多条件(如价格或品味),是否会以相同的方式完成?提前致谢。
这并不交叉匹配,而不是一个内匹配;如果存在“A×1”和“B×2”,则它也将匹配“A×2”和“B×1”。 – 2011-05-31 10:03:55
是的,Ignacio是正确的,它是一个交叉匹配并返回等于A,B,1或2的所有值。不是等于A1和B2的值 – Ruslan 2011-05-31 10:18:15