Django - ModelForm - Фильтр по пользователю

Мне нужно отфильтровать в EmployeeForm только для того, чтобы показать мне варианты компаний, связанных с тем, что пользователь вошел в систему. Я использую ModelForm и CreateViews

Вот мой код:

  • models.py
class Company(models.Model):
    reg_user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    cuit = models.CharField(max_length=20)

class Employee(models.Model):
    company = models.ForeignKey(Empresa, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    cuil = models.CharField(max_length=20)
  • forms.py
class EmployeeForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        ...
        self.fields['name'].widget.attrs['autofocus'] = True

Какой код мне нужно написать в многоточии? Сейчас он показывает мне все компании, даже те, которые не принадлежат пользователю.

Заранее спасибо.

Я использую forms.Form для этого вместо ModelForm, но вот что я делаю:

class EmployeeForm(forms.Form):
    companies = forms.ModelChoiceField(queryset=None)

    def __init__(self, user, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['companies'].queryset = Company.objects.filter(reg_user=user)

Я наконец смог решить эту проблему, используя это в файле views.py

def get_form(self):
        form = super(EmployeeCreateView, self).get_form()
        form.fields['company'].queryset = Company.objects.filter(reg_user=self.request.user)
        return form

Спасибо всем!

Вернуться на верх