何年にもわたる PHP プログラミングを経て、初めての実際の Django プロジェクトに取り組んでいますが、モデルに問題が発生しています。最初に、私はモデル間でコードをコピー アンド ペーストしていることに気付きました。熱心な OO プログラマーとして、他のモデルが継承できる親クラスを作成することにしました。
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 管理ページで、「レンダリング中に例外が発生しました: 'Category' オブジェクトに属性 'name' がありません」というエラーが吐き出されます。
誰かが私を正しい方向に向けることができますか?