Tenir compte que je l'ai défini les modèles suivants:Comment remplacer correctement la méthode save() ModelForm pour un modèle avec ManyToManyField
class Tag(models.Model):
name = models.CharField(max_length=20)
class Entry(models.Model):
title = models.CharField(max_length=100)
date = models.DateField()
tags = models.ManyToManyField(Tag)
et le formulaire de modèle suivant:
class EntryForm(forms.ModelForm):
tags = CharField(max_length=100, label='Tags', required=False)
class Meta:
model = Entry
Fondamentalement, j'ai une entrée avec Mots clés. Les tags ne sont pas nécessairement déjà créés. Je dois recevoir un formulaire d'inscription rempli et le sauvegarder avec des tags.
Je peux le faire facilement si je n'ai pas la relation ManyToMany dans l'entrée. Mais avec cela, je dois d'abord enregistrer les étiquettes, puis ajouter les étiquettes enregistrées à l'entrée, puis enregistrer l'entrée. Ce qui signifie que je dois remplacer la méthode save() d'EntryForm.
J'ai déjà vu la question this, mais elle a l'air différente. Dans mon cas, je n'ai besoin de sauvegarder que les tags, et le reste devrait pouvoir utiliser save() par défaut de ModelForm.
J'ai présenté un exemple simplifié. En vrai, j'ai beaucoup plus de champs dans l'entrée. Quelle est votre recommandation pour écrire la méthode save() d'EntryForm d'une manière django?
Oui, cela ressemble vraiment à une meilleure solution. – grigy