Skip to main content
 首页 » 编程设计

python之Django 模型中的类属性继承

2025年05月04日34linjiqin

有两种模式:

class BaseImage(models.Model): 
    description = models.CharField(max_length=200) 
    image = models.ImageField(upload_to='images') 
 
    class Meta: 
        abstract = True 
 
class PostImage(BaseImage): 
    in_text = models.BooleanField() 
 
    def __init__(self, *args, **kwargs): 
        super(BaseImage, self).__init__(*args, **kwargs) 
        self.image.upload_to = 'images/news/%Y/%m/%d' 

如何在基础模型中设置 upload_to 属性?这是我的尝试不起作用:

        self.image.upload_to = 'images/news/%Y/%m/%d' 

请您参考如下方法:

我可以建议的是编写函数以从实例上传到方法,例如

在模型中

#default method to get file upload path 
def get_upload_to(instance, filename): 
    return instance.get_upload_to_path(filename) 
 
class BaseImage(models.Model): 
    description = models.CharField(max_length=200) 
    image = models.ImageField(upload_to=get_upload_to) 
 
    class Meta: 
        abstract = True 
    #method on the class to provide upload path for files specific to these objects 
    def get_upload_to_path(instance, filename): 
         return 'images/'+filename 
 
class PostImage(BaseImage): 
    in_text = models.BooleanField() 
 
    #method to provide upload path for PostImage objects 
    def get_upload_to_path(instance, filename): 
    #change date.year etc to appropriate variables 
         return 'images/news/%Y/%m/%d' % (date.year, date.month, date.day)