我正在Django应用程序中上传图像。这是我的模型。py。
def file_rename(instance, filename):
ext = filename.split('.')[-1]
count = Count.objects.get(pk=1)
ZSN = "ZT-WJ-" + str(count.jeans_count + 1)
filename = '{}.{}'.format(ZSN, ext)
return os.path.join('images', filename)
class Images(models.Model):
design_id = models.CharField(max_length=128)
file = models.ImageField(upload_to=file_rename)
cost_price = models.FloatField()
category = models.ForeignKey(Category, on_delete=models.CASCADE, blank=False)
这里所有上传的图像都以'ZT-WJ-' + count_of_image
的名称存储。但是我不希望'ZT-WJ-'
是静态的。我希望它基于图像所属的类别。
例如,我可以像这样在file_rename方法中编写一些代码吗?
if Image.category == "random":
#
else:
#
如何在不干扰前端且不使用JavaScript的情况下做到这一点?
答案 0 :(得分:1)
由于在instance
方法中具有file_rename
参数,因此可以使用它来查找类别。
因此,您的file_rename方法可能类似于:
def file_rename(instance, filename):
if instance.category.name == 'random':
prefix = '1'
else:
prefix = '2'
ext = filename.split('.')[-1]
count = Count.objects.get(pk=1)
ZSN = prefix + str(count.jeans_count + 1)
filename = '{}.{}'.format(ZSN, ext)
return os.path.join('images', filename)