Как да актуализирате динамично „първоначалната“ стойност в Form ChoiceField

Имам формуляр със следното поле:

image_choices = [] 
images = forms.ChoiceField(label=_("Images"), choices=image_choices, initial="")

Трябва да мога да актуализирам стойността на атрибута 'initial', след като науча каква трябва да бъде тази стойност. В момента изпълнявам тази задача в рамките на __init__:

def __init__(self, request, image_choices=image_choices,
             flavor_choices=flavor_choices, args, *kwargs): 
    super(UpdateWorkload, self).__init__(request, args, *kwargs) 
    selected_image = selected_workload['image'] 
    self.fields['images'].initial = selected_image

Не получавам никакви грешки и при отпечатване стойността е налице, но в действителната форма на екрана все още получавам списъка си по подразбиране и не са избрани конкретни елементи, съгласно self.fields['images'].initial = str(selected_image)

Как мога да поправя това?


person Eugene Goldberg    schedule 23.01.2015    source източник
comment
Опитахте ли това: stackoverflow.com/a/11400559?   -  person mariodev    schedule 24.01.2015
comment
FWIW, динамичните начални стойности са нещо от Django 2.0: docs.djangoproject.com/en/2.0/ref/forms/api/   -  person Palisand    schedule 05.11.2020


Отговори (1)


В крайна сметка, използвайки този подход:

self.fields['images'].initial = selected_image
self.fields['flavors'].initial = selected_flavor

работи. Единственото нещо, което направих по различен начин, беше да променя бекенда си от django restframework на tastypie

person Eugene Goldberg    schedule 25.01.2015