重写djang中的FieldFile对象

2024-04-25 15:23:12 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将自定义属性或方法添加到ImageFieldFile对象,而不会带来太大的麻烦?在

例如,我有这个模型:

class SomeModelWithImage(models.Model):
    image = models.ImageField()

还有一节课:

^{pr2}$

我想以某种方式重写ImageFieldFile对象,这样它将有一个返回自定义对象的计算方法,例如:

>> from models import SomeModelWithImage
>> i = SomeModelWithImage.objects.all()[0]
>> i.image
   <ImageFieldFile: /path/to/file>
>> i.image.custom_text
   <Custom object>

升级。我更改了一些对象名称,以使问题变得抽象,并且不会让您感到困惑


Tags: 对象方法模型imagemodel属性models方式
1条回答
网友
1楼 · 发布于 2024-04-25 15:23:12

在Django中,一个model字段总是对应于一个数据库列,所以您想要的是不可能的。另外,类名应该总是单数的,因为类'Image'的对象应该只是一个图像。我想你可能想要更像下面这样的东西:

class ImageSet(models.Model):
    images = models.ManyToManyField('Image')

class Image(models.Model):
    image_file = models.ImageField()
    custom_text = models.CharField(max_length=255)

编辑:

如果您想要一个不需要额外数据库信息的计算字段/方法,只需子类models.ImageField公司名称:

^{pr2}$

相关问题 更多 >