Исходные данные для встроенного набора форм Django Admin не сохраняются - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь предварительно заполнить некоторые строки в Django Admin данными, передаваемыми как параметры запроса (в случае добавления нового объекта в БД).

class TestCaseInlineFormSet(BaseInlineFormSet):
    class Meta:
        model = TestCase
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        super(TestCaseInlineFormSet, self).__init__(*args, **kwargs)

        ids_string = self.request.GET.get('ids')
        if ids_string:
            ids = [int(x) for x in ids_string.split(',')]
            self.initial = [{'test_case': id} for id in ids]


class TestCaseInline(admin.TabularInline):
    model = TestCase
    raw_id_fields = ('test_case',)
    extra = 1
    formset = TestCaseInlineFormSet

    def get_formset(self, request, obj=None, **kwargs):
        formset = super(TestCaseInline, self).get_formset(request, obj, **kwargs)
        formset.request = request
        return formset

    def get_extra(self, request, obj=None, **kwargs):
        extra = super(TestCaseInline, self).get_extra(request, obj, **kwargs)
        requested_extras = len(request.GET.get('ids', '').split(','))
        return max(extra, requested_extras)

Данные предварительно хорошо заполнены этим решением, однако при попытке отправки возникает проблема: предварительно заполненные строки не помечаются как измененные, поэтому они не сохраняются.

Я пытался переопределить has_changed () в TestCaseInlineFormSet, однако это не решает проблему - похоже, has_changed () для набора форм никогда не вызывается?

Есть идеи, как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...