J'ai 4 modèles dont j'ai besoin pour stocker des données à la fois. Pour cela je pense en utilisant ModelForms.Django - Comment travailler avec plusieurs ModelForm dans le même formulaire?
J'ai testé avec 2 ModelForm en même temps, mais cela ne fonctionne pas. Voici le code.
Modèle:
class Main(models.Model):
section = models.ForeignKey(Section)
user = models.ForeignKey(User)
title = models.CharField(max_length=250)
date_inserted = models.DateTimeField(auto_now_add=True)
date_last_update = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.title
# To order in the admin by name of the section
class Meta:
ordering = ['date_inserted']
class BicycleAd(models.Model):
main = models.ForeignKey(Main)
bicycleadtype = models.ForeignKey(BicycleAdType)
bicycleaditemkind = models.ForeignKey(BicycleAdItemKind) # MPTT Model
bicycleadcondition = models.ForeignKey(BicycleAdCondition)
country = models.ForeignKey(GeonamesCountry)
city = models.ForeignKey(GeonamesLocal)
date_inserted = models.DateTimeField(auto_now_add=True)
date_last_update = models.DateTimeField(auto_now=True)
# To order in the admin by name of the section
class Meta:
ordering = ['date_inserted']
formes:
class MainForm(forms.ModelForm):
class Meta:
model = Main
exclude = ('user', 'section')
class BicycleAdForm(forms.ModelForm):
class Meta:
model = BicycleAd
exclude = ('main', 'bicycleadtype', 'bicycleaditemkind', 'bicycleadcondition', 'city')
Vue:
def submit_data_entry_view(request):
form_main = MainForm(request.POST)
form_bicyclead = BicycleAdForm(request.POST)
return render_to_response('app/submit_data_entry.html', {'form_main': form_main, 'form_bicyclead': form_bicyclead}, context_instance=RequestContext(request))
Modèle:
<form method="post" action="">
{{form_main}}
{{form_bicyclead}}
</form>
À la fin je reçois seulement le "form_bicyclead" édité dans le navigateur? Comment puis-je obtenir les deux formulaires à la fois?
Cordialement,
Quelle version de Django utilisez-vous? –
Salut! J'utilise 1.4.2 –
Ensuite, je vous implorerais de revoir votre code et de le mettre à jour en utilisant les vues basées sur la classe, ils prennent un peu d'apprentissage, mais ils brillent vraiment quand vous les maîtrisez. Juste un conseil, je vais voir si je peux revenir à vous avec une réponse! :) –