2009-10-15 29 views
1

下面的代碼從下拉菜單中刪除某些值。 它工作正常,但我想要刪除值,如果用戶缺乏某些權限。 如何訪問ModelForm的構造函數中的request.user?還是有更好的方法來完成我想要做的事情?Django Admin:在ModelForm的構造函數中獲取請求

class AnnouncementModelForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     super(AnnouncementModelForm, self).__init__(*args, **kwargs) 
     self.fields["category"].queryset = AnnouncementCategory.objects.filter(can_post=True) 

回答

1

確定這裏是我如何解決它:

def formfield_for_foreignkey(self, db_field, request, **kwargs): 
    if db_field.name == "category" and not request.user.has_perm('can_post_to_all'): 
     kwargs["queryset"] = AnnouncementCategory.objects.filter(can_post=True) 
     return db_field.formfield(**kwargs) 
    return super(AnnouncementAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 
1

How can I access request.user in the ModelForm's constructor?

表單中的構造函數中使用它,只是將請求傳遞給它。

class AnnouncementModelForm(forms.ModelForm): 

    def __init__(self, request, *args, **kwargs): 
     super(AnnouncementModelForm, self).__init__(*args, **kwargs) 
     qs = request.user.foreignkeytable__set.all() 
     self.fields["category"].queryset = qs 
+1

感謝您的答覆。你確定嗎?因爲我得到這個TypeError: __init __()至少需要2個非關鍵字參數(給出1個) – orwellian 2009-10-16 11:12:40

+0

將「request」參數傳遞給Class創建!它還能得到它嗎? AnnouncementModelForm(請求) – 2009-10-16 12:12:17

相關問題