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
Спасибо всем!