パーミッションで割り当てられたモデルのみdatabrowseで表示する(問題あり)

まず、問題というのは

  • アクセスしたユーザを取得するように出来ていないこと
  • 根本的にアクセスしたユーザごとにdatabrowseの表示を動的に出来るのか

(PythonDjangoの勉強も兼ねてということでもう少し続ける予定)


まずは、パーミッションで割り当てられたモデルのみ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で調べると解決策が見つかるかな?
調べるか:)