如何让 Django 模型变量相对于另一个
How to have a Django model variable relative to another
我是一个尝试新项目的 Django 新手,但我被卡住了:(
我有一个视频模型:
class Video(models.Model):
link = models.CharField(max_length=200)
title = models.CharField(max_length=200)
我想为每个视频自动生成一个简单的 link 视频缩略图。
我首先尝试在模板中生成它,但发现你不能在 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'
我怎样才能完成这项工作?
提前致谢:)
在 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'
如果您真的需要将其存储在数据库中,那也没关系!您可以尝试覆盖此 class 的 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)
我是一个尝试新项目的 Django 新手,但我被卡住了:(
我有一个视频模型:
class Video(models.Model):
link = models.CharField(max_length=200)
title = models.CharField(max_length=200)
我想为每个视频自动生成一个简单的 link 视频缩略图。 我首先尝试在模板中生成它,但发现你不能在 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'
我怎样才能完成这项工作?
提前致谢:)
在 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'
如果您真的需要将其存储在数据库中,那也没关系!您可以尝试覆盖此 class 的 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)