4
下面的代碼工作,我期望它打破:Django的外鍵與多表繼承
class General(Model):
pass
class Captain(Model):
general = ForeignKey('General',related_name='captains')
我可以創建一個一般情況下,加船長,並做「general.captains」按預期工作。
但是,如果這兩個類都從可能具有額外信息的基類繼承,則會發生災難性衝擊。
class Officer(Model):
pass
class General(Officer):
pass
class Captain(Officer):
general = ForeignKey('General',related_name='captains')
>>> g = General()
>>> g.captains
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python27\lib\site-packages\django\db\models\fields\related.py", line
391, in __get__
self.related.model._default_manager.__class__)
File "C:\Python27\lib\site-packages\django\db\models\fields\related.py", line
469, in create_manager
getattr(instance, attname)}
File "C:\Python27\lib\site-packages\django\db\models\fields\related.py", line
301, in __get__
raise self.field.rel.to.DoesNotExist
DoesNotExist
任何想法可能發生在這裏,以及我如何解決它?
我面臨類似的問題,我傾向於認爲這是一個已知的問題。 「避免二級怠速」是銀彈。 – 2011-02-16 07:35:00