Как изменить выбор ModelMultipleChoiceField

Вы можете построить CustomAttributeBuilder для вашего атрибута:

Type[] ctorParams = new Type[] { /*Types of your Attributes Constructor*/ };
ConstructorInfo classCtorInfo = typeof(ColumnAttribute).GetConstructor(ctorParams);

CustomAttributeBuilder myCABuilder = new CustomAttributeBuilder(
                        classCtorInfo,
                        /*arguments for your Attribute*/);

propertyBuilder.SetCustomAttribute(myCABuilder);
5
задан Lakshman Prasad 9 September 2009 в 13:51
поделиться

2 ответа

Объекты форм не имеют своих полей в качестве атрибутов, вам нужно искать в атрибуте «fields», который словарь:

self.fields['author'].queryset = choices

Если вы хотите полностью понять, что здесь происходит, вас может заинтересовать этот ответ - он о моделях, но формы работают аналогично.

8
ответ дан 18 December 2019 в 10:49
поделиться

Хотя Карл и прав насчет полей, вы также пропускаете вызов суперкласса. Вот как я это делаю:

class BookForm(ModelForm):
    author = ModelMultipleChoiceField(queryset=Author.objects.all())

    class Meta:
        model = Book

    def __init__(self, *args, **kwargs):
        letter = kwargs.pop('letter')
        super(BookForm, self).__init__(*args, **kwargs)
        choices = getChoices(letter)
        self.fields['author'].queryset = choices
8
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: