2013-04-10 3 views
1

В моем файле models.py моего django я наследую от двух классов: models.Model и класс, называемый Isbn10, из импортированного Python-модуля pyisbn. Однако, если я пытаюсь создать экземпляр класса, я получаю TypeError: __init __() принимает ровно 2 аргумента (1 задано)Проблемы с конструктором с множественным наследованием моделей django

Я попытался изменить порядок родительского класса, но это не помогло.

Модель:

from django.db import models 
import pyisbn 

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

определение класса ISBN (определенный в модуле 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 определение() требует как сам и ISBN. Поэтому вам придется пройти оба. Кроме того, я должен всегда быть первым аргументом.

+0

Вы хотите сказать, что мне нужен Isbn (self, '9780887276309'), чтобы создать новый экземпляр? Это не работает. Обратите внимание, что класс Isbn определен в pyisbn, который является сторонним модулем python, не относящимся к django. – geeljire

Смежные вопросы