1

私のプロジェクトには、個々のプロジェクトの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、または一般的にフィールドの以前の値を取得するにはどうすればよいですか。

4

0 に答える 0