快速问题。我为编写条件模型而苦苦挣扎。如果使用下面的代码,则会得到所需的.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
是否添加了此函数是否执行任何操作,似乎可以。名称已更改,但未交换图像。有什么想法吗?
答案 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块将被跳过。