2013-04-10 55 views
1

在我的Django應用程序models.py中,我從一個導入的Python模塊pyisbn中繼承了兩個類:models.Model和一個名爲Isbn10的類。然而,如果我嘗試創建一個類的實例,我得到一個TypeError:__init __()只需要2個參數(1給出)Django模型多重繼承的構造函數問題

我試着顛倒父類順序,但它沒有幫助。

型號:

from django.db import models 
import pyisbn 

class Book10(pyisbn.Isbn10, models.Model): 
    pass 

書號類定義(pyisbn模塊中定義):

class Isbn(object): 
    def __init__(self, isbn): 
     super(Isbn, self).__init__() 
     self._isbn = isbn 
     if len(isbn) in (9, 12): 
      self.isbn = _isbn_cleanse(isbn, False) 
     else: 
      self.isbn = _isbn_cleanse(isbn) 

回答

2

INIT()的定義既需要自和書號。所以你必須通過兩個。另外,自我應該永遠是第一個參數。

+0

你的意思是我需要Isbn(self,'9780887276309')來創建一個新實例嗎?它不起作用。請注意,Isbn類是在pyisbn中定義的,這是第三方python模塊,並非django特有的。 – geeljire 2013-04-11 12:42:13