Django: so entfernen Sie Felder aus dem admin-Formular für bestimmte Benutzer?

Mein admin sieht wie folgt aus (ohne auszuschließen, variable):

class MovieAdmin(models.ModelAdmin)
    fields = ('name', 'slug', 'imdb_link', 'start', 'finish', 'added_by')
    list_display = ('name', 'finish', 'added_by')
    list_filter = ('finish',)
    ordering = ('-finish',)
    prepopulated_fields = {'slug': ('name',)}

    form = MovieAdminForm

    def get_form(self, request, obj=None, **kwargs):
        form = super(MovieAdmin, self).get_form(request, obj, **kwargs)
        form.current_user = request.user
        return form

admin.site.register(Movie, MovieAdmin)

Form:

class MovieAdminForm(forms.ModelForm):

    class Meta:
        model = Movie

    def save(self, commit=False):
        instance = super(MovieAdminForm, self).save(commit=commit)
        if not instance.pk and not self.current_user.is_superuser:
            if not self.current_user.profile.is_manager:
                instance.added_by = self.current_user.profile
        instance.save()
        return instance

Ich versuche zu entfernen, die added_by Bereich für den Anwender, da würde ich es vorziehen, füllen Sie es aus der Sitzung. Ich habe versucht, Methoden aus dem folgenden:

Jedoch mit jedem, den ich bekommen: KeyError while rendering: Key 'added_by' not found in Form. Es scheint ich brauche zu entfernen, das Feld früher in form zu Rendern, aber ich bin stecken, wo dies zu tun.

Also, wie kann ich ausschließen, die added_by Bereich für normale Benutzer?

  • Wie sind Sie mit dem entfernen der added_by Feld aus dem Formular? Das bit ist nicht in dem code, den Sie geschrieben.
InformationsquelleAutor ghickman | 2011-06-07
Schreibe einen Kommentar