2017-02-22 19 views
1

我有一個使用Django的網站,其中有一個名爲'CampaignProfile'的模型 - 並且通過身份驗證(登錄)的用戶可以通過表單創建CampaignProfile對象。一旦創建,模型對象可以在經過驗證的用戶個人儀表板上查看。但是,當我登錄到其他用戶帳戶時,相同的模型對象在他們的個人儀表板上可見時,他們不應該。Django - 從一個用戶創建的模型對象對所有其他用戶可見

我該如何指定只有由任何給定用戶創建的對象才能被該用戶看到(除了Django Admin)?

dashboard.views.py:

def dashboard_main(request): 
    if request.user.is_authenticated: 
     all_campaigns = CampaignProfile.objects.all() 
     return render(request, 'dashboard-main.html', {'all_campaigns': all_campaigns}) 
    else: 
     return redirect('/users/login/?next=') 

我已經嘗試過「user.CampaignProfile.objects.all()」當我創建變量「user=request.user.id」,使請求對象的用戶只能看到自己的;但是這會導致錯誤,指出用戶沒有屬性CampaignProfile。雖然我已經設置了ForeignKey的我CampaignProfile模型進行相關的usermodel(下面的模型)......

這裏是我的自定義用戶模型 accounts.models.py:

class UserModel(AbstractBaseUser): 
    user_email = models.EmailField(max_length=255, unique=True, verbose_name='Email Address') 
    user_fname = models.CharField(max_length=30, verbose_name='First Names') 
    user_lname = models.CharField(max_length=30, verbose_name='Last Name') 
    dt_joined = models.DateTimeField(auto_now_add=True) 
    dt_updated = models.DateTimeField(auto_now=True) 
    is_active = models.BooleanField(default=True) 
    is_admin = models.BooleanField(default=False) 
    objects = UserManager() 

    USERNAME_FIELD = 'user_email' 
    REQUIRED_FIELDS = ['user_fname','user_lname'] 

任何建議,非常感謝。

回答

6

CampaignProfile模型創建映射到UserModelForeignKey(或者如果每個用戶只能創建CampaignProfile的一個實例,則爲OneToOneField)。

class CampaignProfile(models.Model): 
    user = models.ForeignKey(UserModel) 
    # other fields 

然後篩選與登錄用戶相關的實例。

all_campaigns = CampaignProfile.objects.filter(user=request.user) 
+0

這是正確的答案。 Django沒有任何請求者請求的行級權限的概念。 – themanatuf

相關問題