2017-05-24 92 views
0

我試圖建立一個在線論壇。現在,我的論壇模型有幾個屬性,其中一個是「所有者」,這是創建此論壇的用戶的ForeignKey。它還有另一個屬性「密碼」,它確保每當擁有者創建論壇時,他/她必須鍵入密碼,以便只有具有正確密碼的其他人才能加入論壇。現在,我正試圖實施一項新功能,以便用戶可以選擇加入現有的論壇;然而,我卡住了。django模型屬性字段空列表

1)我的第一個問題是,爲了創建自定義權限,我首先需要另一個模型屬性,其中包含權限用戶的列表。我正在考慮將模型屬性設置爲空列表permissioned_users = [],以便每當用戶請求加入論壇並擁有正確的密碼時,他/她的用戶名將被添加到列表中,然後添加到我的視圖中。 py我可以使用@user_passes_test來檢查request.user.username是否在列表中。但是,我不確定「學生= []」是否可以工作,以便我可以執行「anyparticularinstance」.students.append(「他的名字」)。

2)如何創建加入論壇功能?我完全實現了創建論壇功能,但是如何讓用戶加入現有的論壇?謝謝!

+0

發佈您的模型將有所幫助。 –

回答

0

您可以通過使用文本字段來實現您的目標,然後在每次更新字段時在文本字段的末尾追加。

型號:

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() 

很明顯,你必須做一些更多的工作,當然。當你想檢查哪個用戶被授予權限時,你使用空格分割字符串,因此str.split(),那麼你可以很容易地遍歷它並進行檢查。可以實現權限

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你可以從默認的管理員定義users.Either自定義權限由Django提供或可能是您自己的自定義管理員,您可以添加或刪除特定用戶的權限。欲瞭解更多信息,你可以看到以下鏈接Django AbstractBaseUser