自动传递额外属性到小部件

0 投票
1 回答
911 浏览
提问于 2025-04-16 01:57

我有一个自定义的模型字段,它可以有一个叫做'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

现在我想问的是:在初始化ModelForm的时候,怎么才能自动把模型字段的'chain'参数传递给小部件类?我希望在HTML中,它能变成表单字段的'class="chainxxx"'属性。

1 个回答

0

像这样重写 ModelForm__init__ 方法:

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)

撰写回答