2017-07-18 32 views
0

我有兩個模型:UserEdusQuestion基於當前用戶的動態查詢集

我需要獲得所有Questions作爲他們的作者具體UserEdus

Models.py

class UserEdus(models.Model): 
user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True) 

class Question(models.Model): 
author = models.ForeignKey(UserEdus, null=False) 

Views.py

class MyQuestionListView(generic.ListView): 
    model = Question 
    paginate_by = 10 
    queryset = Question.objects.filter(author=User.useredus) 
    template_name = 'edus/myquestion_list.html' 

這個查詢集返回int() argument must be a string, a bytes-like object or a number, not 'ReverseOneToOneDescriptor'

如果我做

queryset = User.useredus.question.all() 

返回'ReverseOneToOneDescriptor' object has no attribute 'question'

雖然在模板上的水平,我可以使用

{% for question in user.useredus.question_set.all %} 
+0

你確定你不想要author = UserEdus?給定問題模型,這是作者字段唯一可以做到的:它對UserEdus有一個FK。 – Evert

+0

嘗試'(author = request.user)'而不是'(author = User.useredus)' – hansTheFranz

+0

@Evert,這樣做返回相同的int()參數錯誤 hansTheFranz,返回請求未定義 –

回答

1

所以,你將不得不如果你想覆蓋get_queryset方法正確的結果動態設置查詢集基礎上,要求用戶。所以做這樣的事情:

class MyQuestionListView(generic.ListView): 
    model = Question 
    paginate_by = 10 
    template_name = 'edus/myquestion_list.html' 

    def get_queryset(self): 
     return self.request.user.useredus.question_set.all()