Лучшая практика для набора текста из словаря Python (тип self.fields в Django ModelForm)
У меня есть такая форма
class MerchantBrandsForm(forms.Form):
brands = forms.ModelChoiceField(required=True, queryset=None)
def __init__(self: merchant: Merchant):
self.fields['brands'].queryset = merchant.brands.all()
Но у меня ошибка mypy
с кверисетом, так как fields
имеет тип Dict[str, Field]
, что вызывает error: "Field" has no attribute "queryset"
.
Я знаю, что могу приводить fields
с помощью cast
или игнорировать тип, но не думаю, что это чистое решение. Какой лучший способ присвоить brands
queryset, не игнорируя тип или используя cast
функцию?
Вы сначала должны сделать супервызов для "заполнения" объекта self.fiels
:
class MerchantBrandsForm(forms.Form):
brands = forms.ModelChoiceField(required=True, queryset=Brand.objects.none())
def __init__(self, *args, merchant: Merchant, **kwargs):
super().__init__(*args, **kwargs)
self.fields['brands'].queryset = merchant.brands.all()