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)