Django manager in lookup fields

141 Views Asked by At

I have a SoftDeletableModel named Offer:

class Offer(SoftDeletableModel):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, related_name='offers')
    order = models.ForeignKey(Order, on_delete=models.PROTECT, related_name='offers')
    price = models.PositiveIntegerField()

I am using below query to get all Orders that current user has an offer in it.

Order.objects.filter(offers__user=request.user)

but it counts deleted offers in lookup query. for example, if a user delete his offer from an order, this query returns that order too.

an other example is something like this: Order.objects.filter(offers=48). offer 48 is removed but i get result from this query too.

does django use default manger for lookup fields?

1

There are 1 best solutions below

0
On

Can you try this:

Order.objects.filter(offers__user=request.user, is_deleted=False)