Или используйте эту функцию javascript, чтобы исправить индексирование: (Замените имя EntityName и поле NameName очевидно)
function fixIndexing() {
var tableRows = $('#tblMyEntities tbody tr');
for (x = 0; x < tableRows.length; x++) {
tableRows.eq(x).attr('data-index', x);
tableRows.eq(x).children('td:nth-child(1)').children('input:first').attr('name', 'EntityName[' + x + "].FieldName1");
tableRows.eq(x).children('td:nth-child(2)').children('input:first').attr('name', 'EntityName[' + x + "].FieldName2");
tableRows.eq(x).children('td:nth-child(3)').children('input:first').attr('name', 'EntityName[' + x + "].FieldName3");
}
return true; //- Submit Form -
}
Я предложил бы использовать django-model-utils вместо Django встроенное решение. Основным преимуществом этого решения является отсутствие строкового дублирования объявления. Все объекты выбора объявляются точно однажды. Также это - самый легкий путь к объявлению выбора с помощью 3 значений и храня значение базы данных, отличающееся, чем использование в исходном коде.
from django.utils.translation import ugettext_lazy as _
from model_utils import Choices
class MyModel(models.Model):
MONTH = Choices(
('JAN', _('January')),
('FEB', _('February')),
('MAR', _('March')),
)
# [..]
month = models.CharField(
max_length=3,
choices=MONTH,
default=MONTH.JAN,
)
И с использованием IntegerField вместо этого:
from django.utils.translation import ugettext_lazy as _
from model_utils import Choices
class MyModel(models.Model):
MONTH = Choices(
(1, 'JAN', _('January')),
(2, 'FEB', _('February')),
(3, 'MAR', _('March')),
)
# [..]
month = models.PositiveSmallIntegerField(
choices=MONTH,
default=MONTH.JAN,
)