Voglio usare django formset nella mia vista basata sulla classe. questa è la vista,django __init__ metodo che causa argomento errore
class PeriodCreate(RequestPassingFormViewMixin, WammuCreateView):
model = Chain
template_name = 'dashboard/period_form.html'
form_class = ChainForm
def get_object(self):
chain = Chain.objects.get(pk=self.kwargs['chain_pk'])
return chain
def get_success_url(self):
return reverse('dashboard_period_list', kwargs={'chain_pk': self.object.chain.id, })
def get_context_data(self, **kwargs):
context = super(PeriodCreate, self).get_context_data(**kwargs)
return context
def get_form_kwargs(self, *args, **kwargs):
kwargs = super(PeriodCreate, self).get_form_kwargs(*args, **kwargs)
chain = get_object_or_404(Chain, pk=self.kwargs['chain_pk'])
period = Period(chain=chain)
kwargs['instance'] = period
return kwargs
def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
PeriodInlineFormSet = inlineformset_factory(Chain, Period,
form=PeriodInlineForm,
can_delete=True,
extra=12)
PeriodInlineFormSet.form = staticmethod(curry(PeriodInlineForm, request=request, chain=self.object))
period_formset = PeriodInlineFormSet()
return self.render_to_response(
self.get_context_data(form=form,
period_inline_formset=period_formset))
def post(self, request, *args, **kwargs):
self.object = Chain()
form = self.get_form(self.form_class)
PeriodInlineFormSet = inlineformset_factory(Chain, Period,
form=PeriodInlineForm,
can_delete=True,
extra=5)
PeriodInlineFormSet.form = staticmethod(curry(PeriodInlineForm))
if form.is_valid():
self.object = form.save(commit=False)
period_formset = PeriodInlineFormSet(request.POST, instance=self.object)
if period_formset.is_valid():
self.object.save()
period_formset.save()
return super(PeriodCreate, self).form_valid(form)
else:
return self.render_to_response(
context=self.get_context_data(form=form, period_inline_formset=period_formset))
else:
period_formset = PeriodInlineFormSet(request.POST,instance=self.object)
return self.render_to_response(
context=self.get_context_data(form=form, period_inline_formset=period_formset))
e questa è la mia forma,
class PeriodForm(RequestPassingFormMixin, ModelForm):
class Meta:
model = Period
fields = ['start_date', 'end_date', 'year', 'description']
ed ecco il mio 'RequestPassingFormMixin':
class RequestPassingFormMixin(object):
def __init__(self, request, param, *args, **kwargs):
self.request = request
self.param = param
super(RequestPassingFormMixin, self).__init__(*args, **kwargs)
ma sto ottenendo il seguente errore,
TypeError at ....
__init__() takes at least 3 arguments (2 given)
questo errore che indica il modello in cui ho reso il formset, in modo da sto dando il modello anche (solo la parte in cui ho reso la foresta),
<tbody>
{% csrf_token %}
{{ period_inline_formset.management_form }}
{% for period_form in period_inline_formset %}
{% for hidden in period_form.hidden_fields %}
{{ hidden }}
{% endfor %}
{{period_form.pk}}
<tr>
<td>{{ period_form.start_date }}</td>
<td>{{ period_form.end_date }}</td>
<td>{{ period_form.year }}</td>
<td>{{ period_form.description }}</td>
<td> {% if period_formset.can_delete %}
{{ period_form.DELETE }} {% endif %}</td>
</tr>
{% endfor %}
</tbody>
io non sono abituato ad usare Django formset, per quanto Immagino, non è un errore di formset, o potrebbe essere, forse mi manca qualcos'altro qui, ma dopo una lunga scoperta, non riesco a capirlo ...
grazie per la risposta, mi aiuta a mostrare la mia linea formset, sì c'era un sacco di bug sul mio codice, in realtà la sua non è il mio codice, è un codice di produzione e devo lavorare su it.now il problema è che il mio modulo non sta salvando o puoi dire che il modulo non è valido, quindi torna in forma quando voglio pubblicarlo o salvarlo. Per favore, aiutami ulteriormente a risolvere questo problema, potrebbe esserci un problema nel mio ' post 'metodo, ho detto' potrebbe essere 'perché, non sono abituato a lavorare con django inline formset.so che questa è una domanda aggiuntiva per te. Sarebbe bello se mi aiutassi ulteriormente su questo problema. @ Buran Khalid – RTan
Basta fare un'altra domanda con i dettagli e aggiungere un collegamento a questa domanda; Sono sicuro che non sei l'unico ad affrontare un problema con i formulari. –
ho postato una nuova domanda sul problema, questo il link http://stackoverflow.com/questions/35123355/data-is-not-saving-in-django-formset – RTan