アプリケーションにメニュー (django-console メニュー) があり、その要素へのアクセスを制限したい (モデルも表示しない) のですが、通常のユーザーにはレポートを作成します。ユーザーがsuperuser
すべてを表示できる場合 (ユーザー、インベントリ ... を参照settings.py
)。これどうやってするの ?
# admin.py
...
class UserAdmin(admin.ModelAdmin):
list_display = (
'user',
)
class PaymentAdmin(admin.ModelAdmin):
list_display = (
'user',
)
pass
...
admin.site.unregister(User)
admin.site.register(Message, MessageAdmin)
admin.site.register(Country, CountryAdmin)
admin.site.register(Payment, PaymentAdmin)
admin.site.register(Server, ServerAdmin)
admin.site.register(User, CustomUserAdmin)
admin.site.register(Package, PackageAdmin)
admin.site.register(PackageRoute, PackageRouteAdmin)
そして、models.py の関連部分を次に示します。
# models.py
...
class Message(models.Model):
class Meta:
app_label = 'myprox'
date_created = models.DateTimeField(null=False, default=datetime.utcnow)
title = models.CharField(max_length=256, null=False, blank=False, default="Message Title")
content = models.TextField(null=False, blank=True, default="Message Content")
has_url = models.BooleanField(default=False)
is_sticky = models.BooleanField(default=False)
is_persistent = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
is_generic = models.BooleanField(default=True)
time_shown = models.IntegerField(default=1, null=True, blank=False)
specific_to_plan = models.CharField(max_length=256, null=False, blank=True)
url = models.CharField(max_length=256, null=True, blank=True)
def __unicode__(self):
return self.content
そして今、settings.py:
# settings.py
ADMIN_MENU = [
{
'name': 'Users',
'models': [
'User',
'Message',
'Payment',
],
'icon': 'icon-user'
},
{
'name': 'Inventory',
'models': [
'Country',
'Server',
'Package',
'blog.post'
],
'icon':'icon-user'
},
{
'name': 'Blog',
'models': [
'Post',
],
'icon':'icon-user'
},
{
'name': 'Reports',
'models': [
('Users', '/console/reports/users'),
('Usage', '/console/reports/usage'),
],
'icon':'icon-user'
}
]