0
FileFieldにプロパティを追加して、フィールドをモデルに追加するときに指定できるようにしたいとします。DjangoのカスタムFileField属性とプロパティ
class TestFile(models.Model):
c206 = CategoryFileField(
category='206'
)
また、モデルインスタンスから同じ値を取得します。
tf = TestFile.objects.latest('id')
tf.c206.category # 206
私はImageFileFieldから類推してFileFiled拡張しようとしました:
class CategoryMetadataMixin(object):
@property
def category(self):
return self.category
class CategoryFieldFile(CategoryMetadataMixin, FieldFile):
pass
class CategoryFileField(FileField):
attr_class = CategoryFieldFile
descriptor_class = FileDescriptor
description = _("File")
def __init__(self, verbose_name=None, name=None, category='', **kwargs):
self.attr_class.category = category
super().__init__(verbose_name, name, **kwargs)
def deconstruct(self):
name, path, args, kwargs = super().deconstruct()
if self.category:
kwargs['category'] = self.category
return name, path, args, kwargs
しかし、この場合には
category
は常に
''
を返します。どうやら私は間違った方向に行きました。