gpt4 book ai didi

python - Django 模型继承覆盖字段属性中使用的变量

转载 作者:太空狗 更新时间:2023-10-30 03:04:01 30 4
gpt4 key购买 nike

我正在尝试覆盖继承的 Django 模型中的一些默认值。对于我需要的模型,我有一堆不同的图像尺寸,并且所需的字段有 90% 相同。

我已经尝试创建一个要使用的基础模型,并准备向子模型添加所需的任何其他字段。

我遇到的问题是图像仅使用我设置的“默认”值并且未在子模型中被覆盖。我正在努力实现的目标可行吗?

谢谢!

class ImageLink(models.Model):

#Default Image Sizes
SIZED_WIDTH = 500
SIZED_HEIGHT = 400

THUMB_WIDTH = 50
THUMB_HEIGHT = 50


#Name of the link
name = models.CharField(max_length = 15)

#Images used for link
image_original = models.ImageField(upload_to="imageLink/images/%Y/%m/%d")

image_sized = ImageSpecField( source='image_original',
processors=[ResizeToFill(SIZED_WIDTH, SIZED_HEIGHT)],
format='JPEG',
options={'quality' : 60 })

image_thumb = ImageSpecField( source='image_original',
processors=[ResizeToFill(THUMB_WIDTH, THUMB_HEIGHT)],
format='JPEG',
options={'quality' : 60 })
class Meta:
abstract = True

# Model for all poster links
class PosterLink(ImageLink):

#Image sizes
SIZED_WIDTH = 200
SIZED_HEIGHT = 263

THUMB_WIDTH = 50
THUMB_HEIGHT = 66

最佳答案

不幸的是,Python 类不是这样工作的。定义类时,会评估类主体中的代码(包括字段构造函数)。所以在定义子类时,字段构造函数已经被调用并且这些值被锁定。

此外,Django ORM doesn't support overriding model fields . ImageKit 字段不是常规模型字段,但由于 Django 无论如何都不支持此功能,因此 IK 不支持它。 (我是维护者。)

因此,您要么不得不忍受一些重复,要么深入研究元类的世界。或者,您可以 create a spec class that varies based on the model .

关于python - Django 模型继承覆盖字段属性中使用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17239684/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com