Одна вещь, которую вы можете сделать, это перебрать список элементов и установить атрибут value входного тега каждого поля в form.field_name.value

я есть представление на основе класса (IndexView вviews.py), которая показывает таблицу со всеми данными, хранящимися в базе данных. Это представление отображается вindex.html с помощьюdef get_queryset(self) получить все данные. Проблем пока нет.

Трудной частью для меня является попытка сделать это с помощью формы, чтобы иметь возможность изменять и сохранятьколичество колонка. У меня нет проблем с частью POST, где я использую AJAX для сохранения новых значений. У меня проблемы с получением начальных значений из базы данных для заполнения формы Django (forms.py)

Я пытался с помощьюinitial аргумент в определении полей формы (вforms.py), даже переопределяя__init__ при определении формы,но я не знаю, как получить "одно значение", Я имею в виду, что чем ближе я был на моих тестах, тем большеMultipleChoiceField с участием:forms.ModelMultipleChoiceField(queryset=Item.objects.order_by('code__name')) (достижение поля с множественным выборомItem object (1), Item object (2), etc.)

Но как вы заполняете одинIntegerField или жеCharField с содержимым базы данных для отображения поля таблицы на основе формы в шаблоне?

Я пытаюсь сначала с одним элементом (чтобы понять, как ссылаться на один элемент / значение, чтобы заполнить их с помощью базы данных), прежде чем делать это со всей таблицей:

index.hml:

...
  <form class='my-ajax-form' method='POST' action='.' data-url='{{ request.build_absolute_uri|safe }}'>
    {% csrf_token %}
    {{form.as_table|safe}}
    <button type='submit'>Save changes</button>
  </form>
...

models.py:

class Code(models.Model):
    name = models.CharField(max_length=6)
    description = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Item(models.Model):
    code = models.ForeignKey(Code, on_delete=models.DO_NOTHING)
    amount = models.IntegerField(default=0)

forms.py:

class ItemForm(forms.Form):
    code = forms.CharField(max_length=6)
    description = forms.CharField(max_length=100)
    amount = forms.IntegerField()

views.py:

class IndexView(generic.ListView, AjaxFormMixin, FormView):
    template_name = 'inventory/index.html'
    context_object_name = 'items_list'
    form_class = ItemForm

    def form_invalid(self, form):
        ...

    def form_valid(self, form):
        ...

    def get_queryset(self):
        ...

Я проверил эти документы и некоторые похожие старые проблемы, но я попробовал некоторые из предложений / примеров безуспешно:

https://docs.djangoproject.com/en/2.0/topics/forms/modelforms/#a-full-examplehttps://www.webforefront.com/django/formprocessing.htmlПредварительно заполненные формы ДжангоЗаполните форму Django с данными из базы данных в представлении

Я использую Django 2.0.2

Любая помощь будет оценена. Заранее спасибо.

РЕДАКТИРОВАТЬ: Попытка сделать что-то с помощью UpdateView, как предлагает Энди. Добавлено (пытается получить одно значение по идентификатору):

class ItemUpdate(UpdateView):
    form_class = JoinForm

    def get_object(self,queryset=None):
        obj = Item.objects.get(id=self.kwargs['2'])
        return obj

И указал URL дляpath('', views.ItemUpdate.as_view(), name='index') но всегда получаюKeyError: '2'

Ответы на вопрос(3)

Ваш ответ на вопрос