dans mon administrateur pour un objet chaise code> j'ai un
tabularinline code> pour un nombre arbitraire de
Desk code> Objets. Je veux que chaque chaise code> code> ait toujours au moins un objet code> objet code> associé à celui-ci. Existe-t-il un moyen de rendre l'interface administrative force l'utilisateur à entrer au moins un
code>? Comme montrer une erreur si aucun
bureau code> est entré? P>
3 Réponses :
Matthew Flanagan a un excellent exemple de la manière d'exiger un formulaire valide dans un formulaire de formule: HTTP : //code.google.com/p/wadofstuff/wiki/wadofstuffdjangoforms et http://wadofstuff.blogspot.com/2009/08/requiring-st-least-one-inline-formset.html J'espère que cela vous aide. P>
Vérifiez également ce fil: Stackoverflow.com/Questtions/1206903/...
Un format de formes génériques propre () code> méthode pour nécessiter au moins un élément:
def clean(self):
"""Check that at least one service has been entered."""
super(MyFormSet, self).clean()
if any(self.errors):
return
if not any(cleaned_data and not cleaned_data.get('DELETE', False)
for cleaned_data in self.cleaned_data):
raise forms.ValidationError('At least one item required.')
Utilisation de la réponse d'Akaihola, voici un exemple plus complet:
Ajouter ceci à vos formulaires.Parpy:
class DeskInline(admin.TabularInline): model = Desk formset = AtLeastOneRequiredInlineFormSet class ChairAdmin(admin.ModelAdmin): inlines = [DeskInline,] admin.site.register(Chair, ChairAdmin)