我为我的应用程序扩展了Django管理站点,允许非员工/超级用户访问.这工作得很好.
我为现有模型创建了一个代理模型,并将其注册到我的管理站点,但是,对于非员工用户,它不会出现.从我阅读的文档中,我的理解是代理模型获得了自己的权限.我检查过,这些没有出现在可用权限列表中.
这是我的代码,以防它有用:
正常模型
class Engagement(models.Model):
eng_type = models.CharField(max_length=5)
environment = models.CharField(max_length=8)
is_scoped = models.BooleanField()
class Meta:
ordering = ['eng_type', 'environment']
app_label = 'myapp'
Run Code Online (Sandbox Code Playgroud)
代理模型
class NewRequests(Engagement):
class Meta:
proxy = True
app_label = 'myapp'
verbose_name = 'New Request'
verbose_name_plural = 'New Requests'
Run Code Online (Sandbox Code Playgroud)
模特管理员
class NewRequestsAdmin(ModelAdmin):
pass
def queryset(self, request):
return self.model.objects.filter(is_scoped=0)
Run Code Online (Sandbox Code Playgroud)
自定义管理员注册
myapps_admin_site.register(NewRequests, NewRequestsAdmin)
Run Code Online (Sandbox Code Playgroud)
我一直在和南方管理我的数据库.根据这篇文章,您必须按照它指向用户的说明稍微篡改它.这是一次失败.我的数据库中没有很多信息,因此我取消注释南并运行常规syncdb以排除South.不幸的是,这仍然没有用,我不知所措.任何帮助表示赞赏.
编辑
这是在Django 1.4上
使用代理模型时:
class Uf(models.Model):
...
class CustomUf(Uf):
class Meta:
proxy = True
class CustomUfAdmin(admin.ModelAdmin)
admin.site.register(CustomUf, CustomUfAdmin)
Run Code Online (Sandbox Code Playgroud)
似乎只有超级用户才能通过管理站点访问CustomUf ...我无法弄清楚如何将CustomUf的权限授予普通用户......