2013-04-30 5 views
1

У меня есть modelformset AddressFormSet = modelformset_factory(Address). На мой взгляд, я назначаю этот набор форм различным переменным контекста, но они, похоже, дублируются. Имена ввода совпадают.Несколько наборов моделей в Django

def get_context_data(self, **kwargs): 
    context = super(TravelCreate, self).get_context_data(**kwargs) 
    if self.request.POST: 
     context['address1'] = AddressFormSet(self.request.POST) 
     context['address2'] = AddressFormSet(self.request.POST) 
    else: 
     context['address1'] = AddressFormSet(queryset=self.model.objects.none()) 
     context['address2'] = AddressFormSet(queryset=self.model.objects.none()) 
    return context 

Как я могу дать им разные имена, чтобы данные с обеих форм создавали объекты.

ответ

1

Вы должны обеспечить как FormSets с другим префиксом при создании их с завода, в противном случае они оба будут работать с теми же именами из почтовых данных

def get_context_data(self, **kwargs): 
    context = super(TravelCreate, self).get_context_data(**kwargs) 
    if self.request.POST: 
     context['address1'] = AddressFormSet(self.request.POST, prefix='address1') 
     context['address2'] = AddressFormSet(self.request.POST, prefix='address2') 
    else: 
     context['address1'] = AddressFormSet(queryset=self.model.objects.none(), prefix='address1') 
     context['address2'] = AddressFormSet(queryset=self.model.objects.none(), prefix='address2') 
    return context 

REF: https://docs.djangoproject.com/en/1.5/topics/forms/formsets/#using-more-than-one-formset-in-a-view

Смежные вопросы