Search code examples
djangolimit-choices-to

Django limit_choices_to for multiple fields with "or" condition


I am trying to limit choices for a field, by checking values of the two columns, share_holder and distributor. If either of them is true, then I want that choice.

With the below version, I only get choices satisfying both conditions ('share_holder': True AND 'distributor': True).

limit_choices_to={'share_holder': True, 'distributor': True}

However, I need choices for ('share_holder': True OR 'distributor': True).


Solution

  • You can use Q objects to achieve this.

    from django.db.models import Q
    
    
    limit_choices_to=Q(share_holder=True) | Q(distributor=True)
    

    Official docs on ForeignKey.limit_choices_to