Django对用户的特定权限

时间:2016-10-09 13:01:56

标签: python django

例如,我有一个booleanfield的模型

class Item(BaseModel):
    name = models.CharField(max_length=255)
    pending = models.BooleanField(default=False)

如果用户在管理面板中创建新项目,则挂起字段为false,并且此项目不会在网站上显示,直到其他用户将此字段设置为True,但此用户不得在待处理状态下进行更改他的项目上的字段,但他可以对其他用户项目执行此活动。任何解决方案?

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现这一点,具体取决于您最终将如何使用它。最直接的方法是在你的Item上添加一个外键给用户(假设你使用django auth)。

from django.contrib.auth.models import User
class Item(BaseModels):
    created_by = models.ForeignKey(User)
    name = models.CharField(max_length=255)
    pending = models.BooleanField(default=False)

假设这只是通过视图公开,那么你可以这样做:

def some_view(request):
    if item_being_edited.created_by = request.user and not item_being_edited.pending:
         #rejection goes here
    #do stuff

作为旁注,更改待处理字段。要么具有pending = True意味着项目处于待处理状态,要么具有待批准= False。如果在没有体操的情况下阅读它是有意义的话,它会让事情变得更容易。