我正在尝试使用django admin构建自助服务网站。假设用户只能编辑自己的数据。我可以确保他只能通过这种方式检索自己的记录:
# admin.py
class PersonalDataAdmin(admin.ModelAdmin):
model = PersonalData
exclude = ('data_confirmed',)
list_display = ('first_name', 'last_name', 'email')
def get_queryset(self, request):
qs = super(PersonalDataAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user=request.user)
虽然保存怎么样?为了使View显示在管理界面中,用户需要更改PersonalData条目的权限。如何在接收POST请求时检查该对象属于该用户? 我想我需要为此实现一个ModelForm:
class PersonDataForm(ModelForm):
pass
并将其添加到PersonalDataAdmin。然后我可以覆盖clean()或save()方法。这是正确的方法吗?此外,对于每个用户只有一条记录的情况,是否可以跳过更改列表视图并直接链接到更改视图?
答案 0 :(得分:0)
我会选择重写
ModelAdmin.has_change_permission(request, obj=None)
您可以在其中更改request.user与对象。另请参阅相关的ModelAdmin.has_*_permission()
方法。
对于restring查看对象,请检查: