How to filter objects by CharField

Viewed 63

I want to filter cases_alert(class) by CaseAlert.alert_type which is a CharField. But the parameter of the filter function is not CharField.

Can anyone help me to fix this? Thank you.

models.py

class CaseAlert(models.Model):
    alert_type = models.CharField(max_length=16)

views.py

cases_alerts = CaseAlert.objects.all().prefetch_related('reports').filter(
    CaseAlert.alert_type.in_(['u1'])).order_by(CaseAlert.alert_key)
1 Answers

You can filter with:

CaseAlert.objects.prefetch_related('reports').filter(
    alert_type__in=['u1']
).order_by('alert_key')

If the list contains only one element, you should not use the __in lookup [Django-doc]:

CaseAlert.objects.prefetch_related('reports').filter(
    alert_type='u1'
).order_by('alert_key')
Related