2015-05-23 23 views
3

假設我有一個博客模式限制從改變模型

class Blog(models.Model): 
    author = models.ForeignKey(User) 
    title = models.CharField(max_length=250, unique=True) 
    body = models.TextField() 

我有保證,讓用戶可以更改模型管理的某些領域(許可)Django的員工用戶該博客:

class BlogAdmin(admin.ModelAdmin): 

    def has_add_permission(self, request): 
     return request.user.groups.filter(name='author').exists() 

    def has_change_permission(self, request, obj=None): 
     return request.user.groups.filter(name='editor').exists() or (request.user.groups.filter(name='author').exists() and Blog.objects.filter(pk=obj, author=request.user).count() >0) 

    def has_delete_permission(self, request, obj=None): 
     return request.user.groups.filter(name='editor').exists() or (request.user.groups.filter(name='author').exists() and Blog.objects.filter(pk=obj, author=request.user).count() >0) 

但是我想限制一組用戶改變Blog模型的字段,說'作者'組不能通過管理面板改變作者的字段。

我該怎麼做?先謝謝了。

回答

2

我想我找到了一種方法。我可以重寫的ModelAdminsave_model方法並執行以下操作...

class ArticleAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     if request.user in permited user: 
      obj.save() 
     else: 
      raise forms.ValidationError("you can't do that.") 
+2

您也可以使用''get_readonly_fields()'':https://docs.djangoproject.com/en/1.7/ref/contrib/ admin /#django.contrib.admin.ModelAdmin.get_readonly_fields,以使該字段的UI不可修改 – gipi