經過多年的PHP編程,我正在開發我的第一個真正的Django項目,並且我遇到了模型問題。首先,我注意到,我被複制和模型之間粘貼代碼,併成爲一個勤奮OO程序員,我決定做,其他車型也繼承父類:幫助一個Django模型繼承問題的Python新手
class Common(model.Model):
name = models.CharField(max_length=255)
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.name
class Meta:
abstract=True
到目前爲止好。現在我所有的其他模型都擴展爲「Common」,並且具有我想要的名稱和日期。但是,我有一個「類別」類名稱必須是唯一的。我認爲應該有一個相對簡單的方法來訪問Common中的name屬性並使其具有唯一性。但是,我嘗試使用的不同方法都失敗了。例如:
class Category(Common):
def __init__(self, *args, **kwargs):
self.name.unique=True
原因Django管理頁面吐了錯誤「,而渲染捕獲的異常:‘分類’對象有沒有屬性‘名’
有人能指出我在正確的方向?
我有點震驚地看到,在文檔中,這似乎是一個相當大的遺漏! – Joshmaker 2010-05-26 16:48:08
那麼,模型繼承在Django中完全缺失了一段時間,所以我認爲這是一個很大的改進。我不完全確定,但我認爲你可以在自定義管理器中實現unique = true。或者,您可能可以使用多重繼承,並將UNIQUE_NAME作爲混合使用。 – gomad 2010-05-26 17:06:32