10
votes

Django: forcer les utilisateurs d'administrateur à entrer au moins un élément de la tabularinline

dans mon administrateur pour un objet chaise j'ai un tabularinline pour un nombre arbitraire de Desk Objets. Je veux que chaque chaise ait toujours au moins un objet objet associé à celui-ci. Existe-t-il un moyen de rendre l'interface administrative force l'utilisateur à entrer au moins un ? Comme montrer une erreur si aucun bureau est entré?


0 commentaires

3 Réponses :


0
votes

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.


1 commentaires

Vérifiez également ce fil: Stackoverflow.com/Questtions/1206903/...



9
votes

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.')


0 commentaires

17
votes

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)


0 commentaires