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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我想提一下,尽管这可能无法解决您的问题,但是发送给表单的“初始” 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'
Run Code Online (Sandbox Code Playgroud)
my_field渲染的初始设置为'first_value'。
一些选项(其中包括)可能是:
second_value在初始化表单之前在视图中确定:
class MyView(View):
# determine second_value here
form = MyForm(initial={'my_field': 'second_value'})
Run Code Online (Sandbox Code Playgroud)
在致电之前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)
Run Code Online (Sandbox Code Playgroud)
致电之前,请确保'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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39341 次 |
| 最近记录: |