我是一个尝试新项目的Django新手,我被困住了:(
我有一个视频型号:
class Video(models.Model):
link = models.CharField(max_length=200)
title = models.CharField(max_length=200)
我想自动为每个视频生成一个简单的视频缩略图链接。 我首先尝试在模板中生成它,但发现你不能在jinja中使用任何python(是的......我是Django的新手),然后试图将额外的变量直接放在模型中,但没有任何效果:
class Video(models.Model):
link = models.CharField(max_length=200)
title = models.CharField(max_length=200)
image_source = 'http://img.youtube.com/vi/'+ str(link.split('=')[1]) +'/maxresdefault.jpg'
我怎样才能做到这一点?
提前致谢:)
答案 0 :(得分:2)
在Django模型上设置属性是一种方法。如果您不需要将此图像URL存储在数据库中,则可以执行以下操作:
class Video(models.Model):
link = models.CharField(max_length=200)
title = models.CharField(max_length=200)
@property
def image_source(self):
return 'http://img.youtube.com/vi/'+ str(self.link.split('=')[1]) +'/maxresdefault.jpg'
如果你真的需要将它存储在数据库中,那也没关系!您可以尝试覆盖此类的save()方法,如下所示:
class Video(models.Model):
link = models.CharField(max_length=200)
title = models.CharField(max_length=200)
image_source = models.CharField(max_length=250, blank=True)
def save(self, *args, **kwargs):
# ensure image_source is always updated
self.image_source = 'http://img.youtube.com/vi/'+ str(self.link.split('=')[1]) +'/maxresdefault.jpg'
super(Video, self).save(*args, **kwargs)