パーミッションで割り当てられたモデルのみdatabrowseで表示する(問題あり)
まず、問題というのは
- アクセスしたユーザを取得するように出来ていないこと
- 根本的にアクセスしたユーザごとにdatabrowseの表示を動的に出来るのか
(PythonとDjangoの勉強も兼ねてということでもう少し続ける予定)
まずは、パーミッションで割り当てられたモデルのみdatabrowseに登録
from django.db.models import get_model from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.contrib import databrowse #固定ではなくアクセスしたユーザごとに取得できるようにする user = User.objects.get(username = 'test') id = [] #content_type_id取得 for dic in user.user_permissions.values(): id.append(dic.get('content_type_id')) #content_type_idをuniqueにする i = set(id) id = list(i) #content_type_idから'app_label', 'model'を取得しdatabrowseに登録する for cid in id: content = ContentType.objects.get(pk = cid) app_label = content.app_label model = content.model databrowse.site.register(get_model(app_label, model))
あと、修正しなければいけないところは
- 'content_type_id'をuniqueにするのにset関数を使わない
- もう少しスマートなコーディングが出来るのでは?
ということで、Django Snippetsで調べると解決策が見つかるかな?
調べるか:)