6

add_to_class() を介してフィールドを追加するときに、モデルの継承に問題があります。私はモデルを持っていますFile(models.Model)-Image(File)これらは django-filer から来ています。

私のアプリでは、それらをインポートしてフィールドとメソッドを追加しています:

def method_x(self):
    print "x"

File.add_to_class("expiration_date", models.DateField(null=True, blank=True))
File.add_to_class("method_x", method_x)

イメージはそれらの両方を継承する必要がありますが、フィールドではなくメソッドのみを取得します。

>>> some_file = File.objects.get(id=8)
>>> some_image = Image.objects.get(id=8)
>>>
>>> print some_file.expiration_date # this works
... None
>>>
>>> some_image.metgod_x() # this works
>>> x
>>>
>>> print some_image.expiration_date # and this not
Traceback (most recent call last):
    File "<console>", line 1, in <module>
AttributeError: 'Image' object has no attribute 'expiration_date'

どんな手掛かり?

4

1 に答える 1

4

あなたのモデルadd_to_classはフィールドを属性として追加しません。それはcontribute_to_classあなたのフィールドを呼び出すだけです: django/db/models/base.py#L218

あなたの分野contribute_to_classもそれをしません。モデルの_metaメンバーにフィールドを追加するだけです。django/db/models/fields/__init__.py#L234

于 2011-10-09T21:19:18.053 に答える