私のプロジェクトには、個々のプロジェクトのLead_projectパーミッションを持つ 1 人のリーダーが必要です。この Leader は Project クラスに ForeignKey として格納されます。私のカスタム ProjectAdmin では、save_modelを定義してパーミッションを割り当てることができました。
class ProjectAdmin(GuardedModelAdmin):
...
def save_model(self, request, obj, form, change):
leaderid = obj.get_projectLeaderid()
project = Project.objects.get (name=obj)
newleader = AbstractUser.objects.get (id=leaderid)
assign_perm("lead_project", newleader, project)
obj.save()
私のプロジェクトクラス:
class Project (models.Model):
name = models.CharField(max_length=1000)
projectLeader = models.ForeignKey('anmeldung.AbstractUser', blank=True, null=True, )
...
class Meta:
permissions = (
("view_project", "Has permission to view this project"),
("lead_project", "Is Projectleader"), #Nur ProjecLeader
)
オブジェクトのアクセス許可に django-guardian を使用しています。Assign_permはそのショートカットの 1 つです。remove_perm (これも django-guardian ショートカット)を使用することを考えましたが、「古い」ユーザーの ID が必要です。
質問: 古いユーザーの ID、または一般的にフィールドの以前の値を取得するにはどうすればよいですか。