django 管理组和查询集
django admin groups and queryset
我刚刚创建了 Developers1、Developers2 组。现在我还创建了事务模型,使用 AdminModel 指定如何列出数据。
交易模型:
class Transaction(models.Model):
chp_reference = models.CharField(max_length=50, unique=True)
rent_effective_date = models.DateField(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)
这是管理员事务:
@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]
我想做的是我希望每个组只能访问自己的事务模型,并且每个组只能添加、删除、更新和查看自己的事务(例如 developers1 组不能访问 developers2 事务,反之亦然)
谢谢!
试试这个。 (仅在最后一行更改)
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__in=request.user.groups.all())
我刚刚创建了 Developers1、Developers2 组。现在我还创建了事务模型,使用 AdminModel 指定如何列出数据。
交易模型:
class Transaction(models.Model):
chp_reference = models.CharField(max_length=50, unique=True)
rent_effective_date = models.DateField(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)
这是管理员事务:
@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]
我想做的是我希望每个组只能访问自己的事务模型,并且每个组只能添加、删除、更新和查看自己的事务(例如 developers1 组不能访问 developers2 事务,反之亦然)
谢谢!
试试这个。 (仅在最后一行更改)
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__in=request.user.groups.all())