यह प्रश्न इससे संबंधित है:

class Ingredient(Model):
    name = CharField(max_length=55, unique=True)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ('name',)



class Product(Model):
    name = CharField(max_length=55)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ('name', )


class ProductIngredient(Model):
    product = ForeignKey(Product, on_delete=CASCADE, related_name='product_ingredients')
    ingredient = ForeignKey(Ingredient, on_delete=CASCADE)
    optional = BooleanField(default=False)

    class Meta:
        unique_together = (('product', 'ingredient'),)
        ordering = ('product__name',)

    def __str__(self):
        return f'{self.product} - {self.ingredient}'

मैं दो प्रश्न करना चाहता हूं:

  • उन सभी उत्पादों का चयन करें, जिनकी सामग्री में स्ट्रॉबेरी और दूध नहीं है
  • उन सभी उत्पादों का चयन करें, जिनके अवयवों में स्ट्रॉबेरी या दूध नहीं है

इस मामले में मैं पूरी तरह से खो गया हूँ।

0
Andrew Fount 14 फरवरी 2020, 15:24

1 उत्तर

अपने लिंक किए गए प्रश्न के संदर्भ में आप .filter() के बजाय .exclude() के साथ Q ऑब्जेक्ट्स का उपयोग कर सकते हैं। आप टिल्ड (~) के साथ उपसर्ग करके Q ऑब्जेक्ट्स को भी नकार सकते हैं:

ऐसे उत्पाद जिनमें स्ट्रॉबेरी और दूध शामिल नहीं हैं

.filter(
    ~Q(product__ingredients__ingredient__name='strawberry') &
    ~Q(product__ingredients__ingredient__name='milk')
)

ऐसे उत्पाद जिनमें स्ट्रॉबेरी या दूध नहीं है

.filter(~Q(product__ingredients__ingredient__name__in=['strawberry', 'milk']))
0
bdoubleu 14 फरवरी 2020, 15:34