我必須建立一個系統,讓用戶根據初始調查是否被接受逐步填寫調查。如何根據鏈接到用戶(而不是基於用戶組)的模型來設置Django權限?
這意味着在用戶登錄後,他們需要能夠填寫初步調查以進行篩選。只有在初步篩選調查獲得管理用戶(超級用戶)批准後,用戶才能訪問第二次(也是最後一次)調查。
我有一個測量模型,看起來像這樣:
class Screening_survey(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=20)
surname = models.Charfield(max_length=20)
salary = models.IntegerField()
is_accepted = models.NullBooleanField()
當用戶帖子這個初步調查,他們只能在名字,姓氏和工資領域填補。最初發布調查時,'用戶'設置爲當前登錄用戶(request.user),is_accepted在後臺自動設置爲'未知'。然後由管理員超級用戶將is_accepted值更改爲「yes」或「no」。
如果針對特定用戶的表單將is_accepted字段的值設置爲yes,則該用戶應該能夠訪問下一個調查。
我看過Django的權限,但我不認爲默認權限對我來說很有用,因爲我不希望特定/組/的用戶訪問特定頁面;相反,我希望初始調查已獲批准的用戶訪問下一個視圖(最終調查)。
我也給了@user_passes_test裝飾器一些想法,但它又似乎只檢查用戶基礎上的權限,而不是以用戶和鏈接到它們的模型爲基礎。
我知道這個問題看起來很簡單 - 我對Django以及編程一般都很陌生)。
謝謝你的幫助。
謝謝Tristan。這看起來好像會起作用。我會很快實施它,並提出你的答案。 – SimoneC
謝謝,特里斯坦。邏輯是正確的。但是,我收到了一個錯誤,指出QuerySet(Screening_survey)沒有屬性'is_accepted'。我稍微重寫了它,然後它工作:如果Screening_survey.objects.filter(user = request.user,is_accepted =「Yes」):[其餘邏輯如下]。仍然,好邏輯! – SimoneC