Лучшая практика для набора текста из словаря 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()
Вернуться на верх