ghi*_*man 3 forms django django-admin
我的管理员看起来像这样(没有排除变量):
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)
Run Code Online (Sandbox Code Playgroud)
表格:
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
Run Code Online (Sandbox Code Playgroud)
我正在尝试删除用户的added_by字段,因为我更愿意从会话中填充它.我尝试过以下方法:
然而,每一个我得到:KeyError while rendering: Key 'added_by' not found in Form.我似乎需要在表单呈现过程中先前删除该字段,但我仍然坚持在哪里这样做.
那么如何added_by为普通用户排除该字段呢?
Dan*_*air 13
在评估list_display时,您可能会收到该错误.您无法显示已排除的字段.添加了added_by的版本也需要相应的list_display.
def get_form(self, request, obj=None, **kwargs):
current_user = request.user
if not current_user.profile.is_manager:
self.exclude = ('added_by',)
self.list_display = ('name', 'finish')
form = super(MovieAdmin, self).get_form(request, obj, **kwargs)
form.current_user = current_user
return form
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6706 次 |
| 最近记录: |