2013-09-24 65 views
2

因此,假設這是我的模型:Django的REST框架:對象字段權限

class Project(models.Model): 
    STATUS_NEW = 1 
    STATUS_VERIFICATION = 2 
    STATUS_ACCEPTED = 3 

    STATUS_CHOICES = (
     (STATUS_NEW, _('New')), 
     (STATUS_VERIFICATION, _('Ready for verification')), 
     (STATUS_ACCEPTED, _('Accepted')), 
    ) 

    status = models.PositiveSmallIntegerField(_('Status'), choices=STATUS_CHOICES, default=STATUS_NEW) 

什麼是執行領域權限,使用戶可以從1(新)2更改項目狀態的最好方法(準備驗證),但不能將其狀態更改爲3(已接受)?

回答

1

看看serializer validation docs。如果你在序列化器中實現了一個validate_status方法,你可以在那裏添加邏輯。

我希望有幫助。

+0

有沒有什麼辦法可以在驗證字段時檢查用戶是否是管理員? – ambi

+0

嘗試訪問'self.context.request.user' http://django-rest-framework.org/api-guide/serializers.html#including-extra-context - 整個頁面值得一讀。 –