2016-06-10 5 views
0

Was ist eine gute Möglichkeit, ein Django-Modell für eine vorhandene Python-Klasse (nicht Django) von Drittanbietern hinzuzufügen? Ich habe versucht, die Mehrfachvererbung in etwa so:Django: Erstellen eines Modells für eine Drittanbieterklasse

class ThirdPartyClass(object): 
    pass 

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

aber dies fehlschlägt (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

Was erwarten Sie dies zu tun? –

+0

Nun, ich möchte ModelForThirdPartyClass alle Attribute und Methoden von ThirdPartyClass haben, während auch die Django ORM-Methoden haben. – knipknap

+1

Ich vermute, dies ist ein guter Fall, wenn man die Zusammensetzung der Vererbung vorzieht. –

Antwort

0

Ugh, ich habe in der falschen Richtung gejagt: Die Mehrfachvererbung Code oben tatsächlich funktioniert. Der Fehler war, dass ich das folgende Feld ModelForThirdPartyClass hinzugefügt:

foo = models.DecimalField(19, 4) 

während ich

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

geschrieben Da die Felddefinition zu dem Zeitpunkt ausgewertet wird, wo die Klasse erstellt wird, falsch interpretierte ich den Fehler in Bezug auf die Auflösung der Vererbung.