我正在尝试建立一个在线论坛。现在,我的论坛模型有几个属性,其中一个是" owner",这是创建此论坛的用户的ForeignKey。它还有另一个属性"密码"这确保了每当所有者创建论坛时,他/她必须键入密码,以便只有具有正确密码的其他人才能加入论坛。现在,我正在尝试实现一个新功能,以便用户可以选择加入现有论坛;但是,我被卡住了。
1)我的第一个问题是,为了创建自定义权限,我首先需要另一个包含权限用户列表的模型属性。我正在考虑将模型属性作为空列表permissioned_users = [],以便每当用户请求加入论坛并拥有正确的密码时,他/她的用户名将被附加到列表中,然后添加到我的视图中。 py我可以使用@user_passes_test来检查request.user.username是否在列表中。但是,我不确定"学生= []"将会工作,以便我可以做任何特定实例" .students.append("他的名字")将有效。
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()
,然后你可以轻松地遍历它并进行检查。