好吧,我一直在閱讀其他django繼承問題,我找不到任何幫助。我可能對繼承的工作原理有一個瞭解。但這是我的問題。首先,我有兩個基本模型,我希望所有其他模型都可以繼承。基礎模型只包含一些適用於我所有模型的有用方法。第二個是帳戶特定對象的開始。Django繼承問題
class BaseModel(models.Model):
# A couple of methods that all my models need to have. No fields.
class AccountModel(models.Model):
''' A base model for items related to a specific account'''
account = models.ForeignKey(Account)
def save(self, request, *args, **kwargs):
self.account = request.session['account']
super(AccountModel, self).save(*args, **kwargs)
然後,我有三個型號:
class Keyword(AccountModel) :
keyword = models.CharField(max_length=300)
#other fields, none required...
class Project(AccountModel) :
project_name = models.CharField(max_length=200,verbose_name="Project Name")
#other fields..
class KeywordTarget(BaseModel):
keyword = models.ForeignKey(Keyword)
url = models.URLField(null=True,blank=True)
project = models.ForeignKey(Project)
但是當我嘗試創建一個新的關鍵詞,我得到這個錯誤:
ValueError: Cannot assign "'something'": "Keyword.keyword" must be a "Keyword" instance.
當我這樣做:
kw = Keyword(keyword = "something")
我哪裏錯了?
(另外,請不要告訴我,我應該通過使用多對多,除非它解決了眼前的問題),它看起來既像BaseModel和帳戶模式將抽象
你可能是做錯了,從它看起來像這樣的錯誤:Keyword.keyword是一個外鍵而不是你粘貼的代碼中定義的CharField。 – 2011-03-01 23:54:20
是的......我可能做錯了什麼。它看起來像那樣,但我發佈的代碼就是那裏的內容。這就是爲什麼我認爲這是繼承的原因。 – lovefaithswing 2011-03-02 00:00:20