有条件的模型

时间:2019-05-10 12:26:47

标签: django

快速问题。我为编写条件模型而苦苦挣扎。如果使用下面的代码,则会得到所需的.png文件,但我想指定该文件 if tripName == 'russia'超出条件。但是,当我添加该行代码时,它会立即转到其他代码。有什么想法吗?

更新的代码!

tripImages = (
    ("Russia"),
    ("Italy"),
    ("France"),
)

class Trip(models.Model):

tripName = models.CharField(max_length=64)
tripLogo = models.ImageField(default="default_trip.png", upload_to='trip_pics')

def save(self, *args, **kwargs):
    super().save(*args, **kwargs)

    if self.tripName in tripImages:
        self.tripLogo = '{}.png'.format(self.tripName.lower())
    else:
        pass

    tripImg = Image.open(self.tripLogo)
    print(self.tripLogo)


    if tripImg.height > 300 or tripImg.width > 300:
        output_size = (300, 300)
        tripImg.thumbnail(output_size)
        tripImg.save()

这是我的代码print是否添加了此函数是否执行任何操作,似乎可以。名称已更改,但未交换图像。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我建议您通过覆盖Django模型的save()方法来实现此条件。

检查此堆栈溢出answer

让它变得更简单

Class Trip(models.Model):

tripName = models.CharField(max_length=64)
    tripLogo = models.ImageField(upload_to='trip_pics')

def save(self, *args, **kwargs):
    tripName = getattr(self, 'tripName')
    if tripName in tripImages:
        self.tripLogo = "{}.png".format(tripName.lower())
    else:
        self.tripLogo = "default_trip" 
    super(Model, self).save(*args, **kwargs)

答案 1 :(得分:0)

您如何测试名称已更改?您必须确定是否这样做,否则if块将被跳过。