django模型属性字段空列表

django模型属性字段空列表,django,permissions,Django,Permissions,我正在尝试建立一个在线论坛。现在,我的论坛模型有几个属性,其中一个是owner,它是创建这个论坛的用户的外键。它还具有另一个属性passcode,确保每当所有者创建论坛时,他/她必须键入密码,以便只有具有正确密码的其他人才能加入论坛。现在,我正在尝试实现一个新功能,用户可以选择加入现有论坛;然而,我被卡住了 1我的第一个问题是,为了创建自定义权限,我首先需要另一个模型属性,该属性包含一个许可用户列表。我在考虑将model属性作为一个空列表,permissioned_users=[],这样每当用户

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

1我的第一个问题是,为了创建自定义权限,我首先需要另一个模型属性,该属性包含一个许可用户列表。我在考虑将model属性作为一个空列表,permissioned_users=[],这样每当用户请求加入论坛并拥有正确的密码时,他/她的用户名就会被添加到列表中,然后在my views.py中,我可以使用@user_passes_test检查request.user.username是否在列表中。但是,我不确定students=[]是否能起作用,这样我就可以做任何特殊的演示了


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

您可以通过使用textfield来实现您的目标,然后每次更新字段时都在textfield的末尾追加内容

型号:

permissioned_users = models.TextField(blank=True, null=True)
视图:


显然,您还需要做更多的工作,例如,当您想要检查哪个用户被授予了权限时,您可以使用空格str.split拆分字符串,然后您可以轻松地对其进行迭代并进行检查。

实现权限的一种方法是在模型中定义一个布尔字段,例如:

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提供的默认管理员或您自己的自定义管理员添加或删除特定用户的权限。有关更多信息,请参见以下链接

发布您的模型将有所帮助。
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)