Редактирование данных в базе данных, которые были записаны без формы

В моем проекте есть форма и таблица с чекбоксами, на основе данных, введенных в форму и чекбоксы, я заполняю 2 базы данных и перенаправляю пользователя на страницу, где отображается информация из одной таблицы, все работало очень хорошо, пока я не дошел до редактирования записей, я решил сделать это с помощью UpdateView, передав в template_name тот же шаблон, что и до добавления записей:

вот функция добавления и класс редактирования:

class CampaignEditor(UpdateView):
    model = Campaigns
    template_name = 'mailsinfo/add_campaign.html'
    form_class = CampaignsForm
def add_campaign(request):
    if request.method == 'POST':
        addCampaignDataToDB(request.POST)
    data = list(Emails.objects.values())
    data = MailsTableWithoutPass(data)
    form = CampaignsForm()
    data_ = {
        'form': form,
        'data': data
    }
    return render(request, 'mailsinfo/add_campaign.html', data_)

Но при вызове url для изменения моя таблица данных пуста и в ней нет выбранных флажков, вся обработка формы работает нормально

Вот шаблон, который я использую, и функция, которая записывает данные в таблицы:

<div>
    <div class="container-campaign">
        <div class="campaign-form">
            <form method="post" id="newCampaign">

                    {% csrf_token %}
                    {{ form.name }}<br>
                    {{ form.subject }}<br>
                    {{ form.body }}<br>
                    {{ form.user_guid }}<br>

            </form>
        </div>
        <div class="campaign-table">
            <table
            id="table"
            data-height="480"

            class="table table-dark">
                <thead>
                    <tr name="mails-info">

                        <th data-field="state" data-checkbox="true"></th>
                        <th data-field="id">ID</th>
                        <th data-field="email">Email</th>
                        <th data-field="source">Source</th>
                        <th data-field="created_at">Created at</th>
                        <th data-field="modified_at">Modified at</th>
                    </tr>
                </thead>
            </table>
        </div>
    </div>

        <script>
            var $table = $('#table')

            $(function() {
                var data =   {{data|safe}}
                $table.bootstrapTable({data: data})
            })
        </script>


<button id="button2" class="btn btn-success" type="submit" style="margin-left: 2%">Save campaign</button>

</div>
<script>
             var table = $('#table')
             var button = $('#button2')

             $(function() {
                button.click(function () {
                    ids = []
                    for( i in table.bootstrapTable('getSelections')){
                        ids.push(table.bootstrapTable('getSelections')[i].id)
                    }
                    console.log(ids)
                    var form = $('#newCampaign')[0];
                    var formData = new FormData(form);
                    formData.append("IDs", ids);
                    $.ajax({
                          type: "POST",
                          enctype: 'multipart/form-data',
                          url: '',
                          data: formData,
                          processData: false,
                          contentType: false,
                          dataType: 'text/json',
                          success: function(){ alert("All ok") },
                          error: function() {
                                window.location.replace('..');
                           }

                    });
                })
             })
        </script>
def addCampaignDataToDB(req):
    mails_id = req
    print(mails_id)
    formCampaigns = CampaignsForm(req)
    IDs = req['IDs']
    if IDs != '':
        IDs_list = IDs.split(',')
        user_guid = req['user_guid'][0]
        for i in IDs_list:
            CampaignEmail.objects.create(email_guid=int(i), campaigne_guid=int(user_guid))

    if formCampaigns.is_valid():
        formCampaigns.save()

Есть ли какой-нибудь метод при вызове этого url:

?
path('editCampaign/<int:pk>', views.CampaignEditor.as_view(), name='editCampaign')

, в дополнение к записанной форме, получить таблицу данных с чекбоксами, доступными для редактирования?

Заранее прошу прощения, если я не предоставил какую-то информацию или объяснил что-то непонятно

Вы не передаете никаких дополнительных данных в форму обновления. Представление обновления является отдельным и не наследует данные от представления добавления кампании, поэтому если вам нужен дополнительный контекст, вы можете:

class CampaignEditor(UpdateView):
    model = Campaigns
    template_name = 'mailsinfo/add_campaign.html'
    form_class = CampaignsForm
    def get_extra_context(self):
        //call the super context from the parent class
        context = super().get_context_data(*args, **kwargs)
        data = list(Emails.objects.values()) #you may want to further filter for update purposes
        data = MailsTableWithoutPass(data)
        context['data'] = data
        return context

Я не уверен, насколько большая часть формы создается javascript - возможно, стоит помнить, что шаблоны django делаются на стороне сервера, поэтому если вам нужно заполнить поля, которые создаются на стороне клиента с помощью JS, вам нужно поместить их значения куда-нибудь в виде JS-переменных, на которые вы сможете ссылаться позже, например,

<script>
    {% for field in form %}
       {{field.name}} = "{{field.value}}"
    {% endfor %}
<script>
    
Вернуться на верх