Автоматическая передача дополнительных атрибутов в виджет - PullRequest
0 голосов
/ 28 июля 2010

У меня есть пользовательские поля модели, которые могут иметь аргумент 'chain'.


from django.db import models

class ChainField(object):
    def __init__(self, *args, **kwargs):
        chain = kwargs.get('chain', False)
        if chain:
            self.chain = chain
            del kwargs['chain']

        super(self.__class__.__mro__[2], self).__init__(*args, **kwargs)

class DateTimeField(ChainField, models.DateTimeField):
    pass

А теперь вопрос: как я могу автоматически передавать аргумент 'chain' поля модели в класс виджета при инициализации ModelForm?Я понял, что в html он становится атрибутом class = "chainxxx" поля формы.

1 Ответ

0 голосов
/ 28 июля 2010

Переопределить __init__ из ModelForm как это:

class MyClass(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyClass, self).__init__(*args, **kwargs)

        chain_value = self.fields['name_of_the_field'].chain
        self.fields['name_of_the_field'].widget = CustomWidget(chain=chain_value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...