2016-06-10 92 views
0

爲現有第三方(非Django)Python類添加Django模型的好方法是什麼?我試圖多重繼承,像這樣:Django:爲第三方類創建模型

class ThirdPartyClass(object): 
    pass 

class ModelForThirdPartyClass(models.Model, ThirdPartyClass): 
    uid = models.ForeignKey(settings.AUTH_USER_MODEL) 

但這種失敗(Django的1.8.7):

File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 361, in _prepare 
    cls.__doc__ = "%s(%s)" % (cls.__name__, ", ".join(f.name for f in opts.fields)) 
TypeError: sequence item 4: expected str instance, int found 
+0

你對此有何看法? –

+0

好吧,我希望ModelForThirdPartyClass具有ThirdPartyClass的所有屬性和方法,同時還具有Django ORM方法。 – knipknap

+1

我懷疑這是一個比繼承更喜歡構圖的好例子。 –

回答

0

唉,我一直在錯誤的方向追:上述多重繼承代碼實際工作。該錯誤是,我添加了以下字段添加到ModelForThirdPartyClass:

foo = models.DecimalField(19, 4) 

,而我應該寫

foo = models.DecimalField(max_digits=19, decimal_places=4) 

由於字段定義是在其中創建類的時間來評價,我曲解了錯誤至於與解決繼承有關。