django模型属性字段空列表

时间:2017-05-24 03:46:29

标签: django permissions

我正在尝试建立一个在线论坛。现在,我的论坛模型有几个属性,其中一个是" owner",这是创建此论坛的用户的ForeignKey。它还有另一个属性"密码"这确保了每当所有者创建论坛时,他/她必须键入密码,以便只有具有正确密码的其他人才能加入论坛。现在,我正在尝试实现一个新功能,以便用户可以选择加入现有论坛;但是,我被卡住了。

1)我的第一个问题是,为了创建自定义权限,我首先需要另一个包含权限用户列表的模型属性。我正在考虑将模型属性作为空列表permissioned_users = [],以便每当用户请求加入论坛并拥有正确的密码时,他/她的用户名将被附加到列表中,然后添加到我的视图中。 py我可以使用@user_passes_test来检查request.user.username是否在列表中。但是,我不确定"学生= []"将会工作,以便我可以做任何特定实例" .students.append("他的名字")将有效。

2)如何创建加入论坛功能?我已完全实现了创建论坛功能,但如何允许用户加入现有论坛?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以获得权限的一种方法是在模型中定义一个布尔字段,例如:

class Forum(AbstractBaseUser):
   username=models.CharField(max_length=20,unique=True)
   name = models.CharField(max_length=20)
   email = models.EmailField(max_length=254,null=True,blank=True)
   is_active   = models.BooleanField(default=True)
   is_admin    = models.BooleanField(default=False)
   is_staff    = models.BooleanField(default=False)

通过在Django中扩展AbstractBaseUser,您可以为用户定义自定义权限。无论是从Django提供的默认管理员还是您自己的自定义管理员,您都可以为特定用户添加或删除权限。有关详细信息,请参阅以下链接Django AbstractBaseUser

答案 1 :(得分:0)

您可以使用文本字段实现目标,然后在每次更新字段时附加到文本字段的末尾。

型号:

__del__

查看:

permissioned_users = models.TextField(blank=True, null=True)

显然你必须做更多的工作,例如。当你想检查哪个用户被授予权限时,你使用空格分割字符串foo = Forum.objects.get(id=id) temp = foo.permissioned_users temp = temp+" username" foo.permissioned_users = temp foo.save() ,然后你可以轻松地遍历它并进行检查。