Ste*_*yer 34 python django django-1.6
Django 1.6
我在Django表单类中有一个工作代码块,如下所示.我正在构建表单字段列表的数据集可以包含任何字段的初始值,而我在表单中设置该初始值时没有成功.if field_value:下面的块确实填充了初始表单字典属性,但未显示初始值.请注意(如果您想知道)该.initial属性在super()调用之后才存在.
可以这样做吗?
如果是这样,那么我做得不好的事情呢?
谢谢!
def __init__(self, *args, **kwargs):
    id = kwargs.pop('values_id', 0)
    super(LaunchForm, self).__init__(*args, **kwargs)
    # Lotsa code here that uses the id value
    # to execute a query and build the form
    # fields and their attributes from the 
    # result set
    if field_value:
        self.initial[field_name] = field_value
Vic*_*nes 29
我有同样的问题,我解决了这个问题:
def __init__(self, *args, **kwargs):
    instance = kwargs.get('instance', None)
    kwargs.update(initial={
        # 'field': 'value'
        'km_partida': '1020'
    })
    super(ViagemForm, self).__init__(*args, **kwargs)
    # all other stuff
ndp*_*dpu 21
试试这种方式:
super(ViagemForm, self).__init__(*args, **kwargs)
if field_value:
    #self.initial[field_name] = field_value
    self.fields[field_name].initial = field_value
我想提一下,尽管这可能无法解决您的问题,但是发送给表单的“初始” dict kwarg似乎更喜欢field['field_name'].initial。
class MyView(View):
    form = MyForm(initial={'my_field': 'first_value'})
class MyForm(Form):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['my_field'].initial = 'second_value'
my_field渲染的初始设置为'first_value'。  
一些选项(其中包括)可能是:
second_value在初始化表单之前在视图中确定:
class MyView(View):
    # determine second_value here
    form = MyForm(initial={'my_field': 'second_value'})
在致电之前first_value以second_valuein 替换:initialsuper()
class MyForm(Form):
    def __init__(self, *args, **kwargs):
        # determine second_value here
        if kwargs.get('initial', None):
            kwargs['initial']['my_field'] = 'second_value'
        super().__init__(*args, **kwargs)
致电之前,请确保'first_value'没有进入:kwargs['initial']super()
class MyForm(Form):
    def __init__(self, *args, **kwargs):
        if kwargs.get('initial', None):
            if kwargs['initial']['my_field']
                del(kwargs['initial']['my_field']
        super().__init__(*args, **kwargs)
        # determine second_value here
        self.fields['my_field'].initial = 'second_value'
| 归档时间: | 
 | 
| 查看次数: | 39341 次 | 
| 最近记录: |