2016-06-10 95 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) 

由于字段定义是在其中创建类的时间来评价,我曲解了错误至于与解决继承有关。