2016-06-14 41 views
0

我想超載在下面的代碼get函數...ValueError異常Django的model.Manager.get功能

class QuizzerBotManager(models.Manager): 

    def create_quizzer_bot(self): 
     quizzer_bot = self.create(
      client_data=None, 
      should_set_name = False, 
      should_set_age = False, 
      should_set_gender = False, 
      quiz = None, 
      quiz_length = 0, 
      should_set_quiz = False, 
      should_check_postback = False, 
      should_check_message = True, 
      should_check_answer = False, 
      question_number = 0, 
      score = 0 
     ) 
     quizzer_bot.answer_statuses = [] 
     return quizzer_bot 

    def get_quizzer_bot(self, *args, **kwargs): 
     try: 
      quizzer_bot = self.get(args, kwargs) 
      quizzer_bot.answer_statuses = json.loads(quizzer_bot.answers) 

     except ProgrammingError: 
      quizzer_bot = self.create_quizzer_bot() 

     return quizzer_bot 

不過,我發現了以下錯誤:

ValueError: need more than 0 values to unpack 

堆棧顯示此錯誤發生在我嘗試撥打self.get(args, kwargs)的地方。 這是爲什麼?我該如何解決?

回答

2

你沒有正確通過你的argskwargs。試試這個:

quizzer_bot = self.get(*args, **kwargs) 
+0

謝謝,我簡直不敢相信這是一件如此基本的。但是,幫助我理解......這不僅僅意味着解開清單的包裝? – NJay

+0

用'args'將參數作爲元組傳遞。但是,該函數不會使用元組。但是對於'* args',函數無法區分帶有所有參數的* regular *調用和this('* args')。 –

0

你應該通過與相關運營商拆包這些參數:

quizzer_bot = self.get(*args, **kwargs)