我們正在使用django開發客戶管理應用程序,我們需要爲代理設置權限,無論他/她是否可以編輯客戶的屬性()。django管理員權限修改模型的屬性
例如,
,如果我有一個模型:
class Customer(models.Model):
# basic information
name = models.CharField(max_length=150) # the name of this customer
date = models.DateField(auto_now_add=True) # the date that this customer is created
# personal information
citizen_id = models.BigIntegerField(blank=True)
phone = models.BigIntegerField(max_length=20, blank=True)
work = models.CharField(max_length=100, blank=True)
address = models.CharField(max_length=300, blank=True)
bank_card = models.BigIntegerField()
# installation detail
primary = models.IntegerField(default=0)
secondary = models.IntegerField(default=0)
region = models.ForeignKey(Region) # the region that this customer currently lives in
type = models.ForeignKey(Type) # the installation type
group = models.ForeignKey(Group)
STATUS_CHOICES = (
('Active', 'Active'),
('Inactive', 'Inactive'),
('Transfered', 'Transfered'),
('Closed', 'Closed'),
('Suspended', 'Suspended'),
('Cancelled', 'Cancelled'),
)
status = models.CharField(max_length=40, choices=STATUS_CHOICES)
,我希望能夠設置權限爲編輯某些字段,但目前的許可制度只允許你添加/更改/刪除模型實例,其中「更改」允許用戶編輯該模型中的所有屬性,這不是我們真正想要的。
用戶A可以編輯的電話,住址,工作和citizen_id 用戶B只能編輯電話和地址, 用戶C可以編輯citizen_id,..... 等等
,我想能夠設置不同的權限
是否有可能做到這一點?如果我可以使用django管理系統來管理代理和客戶,這將非常有幫助。
======================= 非常感謝你對FallenAngel的回覆。
我認爲這正是我們想要的。
這是我試過,
在admin.py
class CustomerAdmin(admin.ModelAdmin):
def change_view(self, request, object_id, extra_context=None):
agent = Agent.object.get(user=request.user)
permitted_fields = agent.permitted_fields # assume i have this setup...
self.readonly_fields = get_not_permitted_fields(premitted_fields) # assume I have this function written somewhere
return super(CustomerAdmin, self).change_view(request, object_id,
extra_context=None)
這部作品正是這樣,我想:對於不允許的領域,將它們設置爲只讀...
再次感謝,