Django 관리자 그룹 권한 및 액세스

Nov 17 2020

사용자 그룹을 기반으로 권한 및 데이터를 지원하도록 Django Administration을 사용자 정의하는 방법을 찾고 있습니다.

예를 들어, 방금 Developers1, Developers2 그룹을 만들었습니다. 이제 AdminModel을 사용하여 데이터를 나열하는 방법을 지정하는 트랜잭션 모델도 만들었습니다.

Transacton 모델 :

class Transaction(models.Model):
income_period_choices = (('Weekly', 'Weekly'), ('Fortnightly',
                                                'Fortnightly'))
chp_reference = models.CharField(max_length=50, unique=True)
rent_effective_date = models.DateField(null=True, blank=True)
income_period = models.CharField(max_length=11,
                                choices=income_period_choices,
                                null=True,
                                blank=True)
property_market_rent = models.DecimalField(help_text='Weekly',
                                        max_digits=7,
                                        decimal_places=2,
                                        null=True,
                                        blank=True)
*group = models.ForeignKey(Group, on_delete=models.CASCADE)

* group 필드에 대해 잘 모르겠습니다. 삭제해야합니까? 아니면 django.contrib.auth.group 모델에 대한 외래 키가 아닌 Charfield를 만들어야합니까?

그리고 이것은 관리자 트랜잭션입니다.

 @admin.register(Transaction)
 class TransactionAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.user = request.user
        super().save_model(request, obj, form, change)

def get_queryset(self, request):
    qs = super().get_queryset(request)
    # for s in qs:
    if request.user.is_superuser:
        return qs
    return qs.filter(group_name__in=Group)

search_fields = ['chp_reference','familymember__name']
inlines = [FamilyGroupInline,FamilyMemberInline]

내가하려는 것은 각 그룹이 자신의 트랜잭션 모델에만 액세스하도록하고 각 그룹은 자신의 트랜잭션 만 추가, 삭제, 업데이트 및 볼 수 있기를 원합니다 (예 : 개발자 1 그룹은 개발자 2 트랜잭션에 액세스 할 수 없으며 그 반대도 마찬가지 임).

어떤 생각이라도 감사해야합니다

감사!:)

답변

1 m0etaz Nov 17 2020 at 14:16

이를 위해 get_queryset 메서드 를 재정 의하여 이러한 사용자와 관련된 개체 만 반환 할 수 있습니다 (권한, 그룹 또는 원하는 조건에 따라).