У меня есть модель товара и модель цены.Ценовая модель имеет FK для модели продукта.Может быть несколько цен (в зависимости от количества проданных единиц).До django 1.2.5 http://yergler.net/blog/2009/09/27/nested-formsets-with-django/ эта проблема была бы решена.Но, как указано http://www.mail-archive.com/django-users@googlegroups.com/msg124195.html, это больше не работает.
Конечный желаемый результат: следующая форма для редактирования и добавления данных.
Продукт Один - Цена Один, Количество - Цена Два, Количество Продукт Два - Цена Один, Количество Продукт Три - Цена Один, Количество - Цена Два, Количество - Цена Три, Количество
Воспроизводится дляясность:
В исходном коде Натана форма набора самого низкого уровня создается следующим образом:
TenantFormset(data=self.data,
instance=instance,
prefix='TENANTS_%s' % pk_value)
, где instance - это экземпляр Building, «родительский» или контейнер для арендаторов, а self -экземпляр
class BaseBuildingFormset(BaseInlineFormSet)
, который создается следующим образом:
BuildingFormset = inlineformset_factory(models.Block,
models.Building,
formset=BaseBuildingFormset,
extra=1)
Чтобы обойти это, я перестал передавать self.data, что привело к тому, что формы в нижнем слое всегда имеют is_bound= Ложь, даже после рендеринга и отправки обратно в представление.Следовательно, проверка всегда заканчивается неудачей, и объекты, которые представляют формы, не могут быть обновлены.Я воспроизвел поведение, используя код из поста Натана в блоге, поэтому кажется, что этот подход к вложению наборов форм больше не действителен, или код требует настройки для работы с 1.3.
До Django 1.2.5, код Натана работает отлично.Однако в 1.3, если self.data передается в TenantFormset, он оказывается пустым, и возникает ошибка ValidationError, поскольку информация ManagementForm не была предоставлена.
Это предполагаемое следствие # 11418, AFAICT.
У кого-нибудь есть другие идеи о том, как это можно сделать?
Приветствия,
(Извините за отсутствие подробных примеров кода - пост Натана намного яснее, чем мой код, поэтому я рекомендую вам взглянуть на это.)
Общее примечание: кажется, что существует путаница в том, как это сделать, что показано в ответах здесь http://www.reddit.com/r/django/comments/hwyto/is_there_a_way_to_do_nested_formsets_in_django/