Python 如何在django admin中添加对象级权限
我有一个Python 如何在django admin中添加对象级权限,python,django,python-3.x,Python,Django,Python 3.x,我有一个建筑模型,其中我有一个字段注释,它与一般注释有一般关系。在建筑中管理员添加了一般注释作为内联线。现在,我希望GeneralNotes对于作为generalnote所有者的用户是可编辑的 类构建(timestamesedmodel): name=models.CharField(unique=True,max_length=100,verbose_name=(“建筑名称”),help_text=(“这是您的建筑名称”) ) 注释=一般关系(一般注释) 类GeneralNote(TimeS
建筑
模型,其中我有一个字段注释
,它与一般注释
有一般关系。在建筑中
管理员添加了一般注释
作为内联线。现在,我希望GeneralNotes
对于作为generalnote所有者的用户是可编辑的
类构建(timestamesedmodel):
name=models.CharField(unique=True,max_length=100,verbose_name=(“建筑名称”),help_text=(“这是您的建筑名称”)
)
注释=一般关系(一般注释)
类GeneralNote(TimeStampedModel):
owner=型号。ForeignKey(
公司员工,
空白=真,
空=真,
#相关的\u name='noteOwner',
on_delete=models.SET_NULL,
详细的\u name=“注释所有者”,
)
content=models.TextField(最大长度=400,null=True)
操作的日期=models.DateField(null=True)
content\u type=models.ForeignKey(ContentType,on\u delete=models.CASCADE)
object_id=models.PositiveIntegerField()
附加到=GenericForeignKey()
在admin.py
中:
class BuildingAdmin(ImportMixin,generalnotesincludeadmin):
inlines=(GeneralNoteInLine,)
类GeneralNotesIncludedAdmin(CoreBaseAdmin):
def保存表单集(自我、请求、表单、表单集、更改):
实例=formset.save(提交=False)
例如:
如果不是instance.owner:
instance.owner=request.user.companyemployee
save()实例
super().保存表单集(请求、表单、表单集、更改)
类CoreBaseAdmin(admin.ModelAdmin):
将_保存在_顶部=真
您可以使用和使用guardian。您可以使用以下方法:
您还可以将这些添加到:
class GeneralNotesIncludedAdmin(CoreBaseAdmin):
def has_change_permission(self, request, obj=None):
if obj is None:
return True
return obj.owner == request.user.companyemployee
class GeneralNoteInLine(InlineModelAdmin):
def has_change_permission(self, request, obj=None):
if obj is None:
return True
return obj.owner == request.user.companyemployee