Исходные данные не полностью отображаются в django modelformset_factory - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь отобразить разные исходные данные для каждой формы в моем наборе форм.Я не получаю сообщение об ошибке, однако данные отображаются не полностью.Появляется только первый объект.Как мне это исправить?

all_names = defaultdict(list)

for object in MyModel.objects.all():    #  obj1 = John, obj2 = Bob
    all_names['name'].append(object)

MyFormSet = modelformset_factory(MyModel, fields=('name'), extra=2)
formset = MyFormSet(initial=[{'name': n for n in names} for names in all_names.values()]

Когда я запускаю:

[print(form.initial) for form in formset]

Я получаю:

{'name': <Name: John>}
{}  # Where is my second object?

1 Ответ

0 голосов
/ 23 января 2019

Чтобы решить эту проблему, я использовал список и добавленные к нему словари вместо использования defaultdict

all_names = list()  # used a list instead of defaultdict

for object in MyModel.objects.all():    #  obj1 = John, obj2 = Bob
    d = dict()
    d['name'] = object
    all_names.append(d)

и вместо:

formset = MyFormSet(initial=[{'name': n for n in names} for names in all_names.values()]

Я сделал:

formset = MyFormSet(initial=all_names)
...