Source code for abstract.forms

from django import forms
from django.db.models import ForeignKey


[docs] class ModelForm(forms.ModelForm): """ A customized ModelForm class that filters ForeignKey queryset based on the operating user. Attributes: exclude_models (list): A list of model names to exclude from ForeignKey queryset filtering. """ exclude_models = ["user.User"] def __init__(self, *args, **kwargs): """ Initialize the ModelForm instance. Args: operating_user (object): The user object for whom the queryset needs to be filtered. *args: Additional positional arguments. **kwargs: Additional keyword arguments. """ operating_user = kwargs.pop("operating_user", None) super().__init__(*args, **kwargs) for field in self._meta.model._meta.get_fields(): if ( isinstance(field, ForeignKey) and f"{field.related_model._meta.app_label}.{field.related_model._meta.object_name}" not in self.exclude_models ): self.fields[field.name].queryset = self.fields[ field.name ].queryset.filter(created_by=operating_user)
[docs] class Meta: """ Meta class to specify metadata options for the ModelForm. """ exclude = ["status", "created_by", "updated_by"]