How do I filter values in a Django form using ModelForm?

You can customize your form in init

class ExcludedDateForm(ModelForm):
    class Meta:
        model = models.ExcludedDate
        exclude = ('user', 'recurring',)
    def __init__(self, user=None, **kwargs):
        super(ExcludedDateForm, self).__init__(**kwargs)
        if user:
            self.fields['category'].queryset = models.Category.objects.filter(user=user)

And in views, when constructing your form, besides the standard form params, you’ll specify also the current user:

form = ExcludedDateForm(user=request.user)

Leave a Comment