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:
- Django-admin - Feld entfernen, wenn die Bearbeitung eines Objekts
- Entfernen von Feldern aus ModelForm
- http://www.mdgart.com/2010/04/08/django-admin-how-to-hide-fields-in-a-form-for-certain-users-that-are-not-superusers/
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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie wahrscheinlich zu bekommen, dass Fehler, wenn list_display ausgewertet wird. Sie können nicht zeigen, dass ein Feld, das ist ausgeschlossen. Die version mit added_by entfernt, braucht auch eine entsprechende list_display.