MISE À JOUR Le problème est résolu, tout le code que vous pouvez voir fonctionne.Un formulaire pour deux modèles
Bonjour! J'ai une relation ForeignKey entre TextPage et Paragraph et mon but est de faire un formulaire de création/modification de TextPage frontal comme s'il était dans ModelAdmin avec 'inlines': plusieurs champs pour la TextPage et ensuite quelques instances de Paragraph empilé en ligne. Le problème est que je n'ai aucune idée sur la façon de valider et enregistrer que:
@login_required
def textpage_add(request):
profile = request.user.profile_set.all()[0]
if not (profile.is_admin() or profile.is_editor()):
raise Http404
PageFormSet = inlineformset_factory(TextPage, Paragraph, fields=('title', 'text',), extra=5)
textpage = TextPage()
if request.POST:
textpageform = TextPageForm(request.POST, instance=textpage, prefix='page')
formset = PageFormSet(request.POST, instance=textpage, prefix='paragraphs')
# Saving data
if textpageform.is_valid():
textpageform.save()
if formset.is_valid():
formset.save()
return HttpResponseRedirect(reverse(consult_categories))
else:
textpageform = TextPageForm(instance=textpage, prefix='page')
formset = PageFormSet(instance=textpage, prefix='paragraphs')
return render_to_response('textpages/manage.html', { 'formset' : formset,
'textpageform' : textpageform,
}, context_instance=RequestContext(request))
Je sais qu'il est une sorte de style de code singe pour écrire le code qui vous ne vous attendez même pas à travailler mais je voulais montrer ce que j'essaie d'accomplir. Voici la partie pertinente de models.py:
class TextPage(models.Model):
title = models.CharField(max_length=100)
page_sub_category = models.ForeignKey(PageSubCategory, blank=True, null=True)
def __unicode__(self):
return self.title
class Paragraph(models.Model):
article = models.ForeignKey(TextPage)
title = models.CharField(max_length=100, blank=True, null=True)
text = models.TextField(blank=True, null=True)
def __unicode__(self):
return self.title
Toute aide serait appréciée. Merci!
MISE À JOUR. références d'instance ajouté, mais ne fonctionne toujours pas - les résultats dans un ValidationError sur cette chaîne:
formset = PageFormSet(request.POST, instance=textpage, prefix='paragraphs')
Toutes les idées?
Je voudrais aider, mais je ne pense pas avoir une bonne réponse. Si vous n'obtenez aucune réponse et que vous ne vous en apercevez pas, cela vous dérangerait-il de poster la réponse? –
bien sûr, je vais :) – martinthenext