1.使用ImageField获取上传图像的名称: 我使用ImageField将post请求得到的图像存储在特定路径中。它返回的是图像路径而不是图像名称
这是我的模型:image\u ref是全局变量
class IMGResize(models.Model):
image = models.ImageField(upload_to='ImgResize', blank=True)
class Meta:
db_table = 'imgresize'
def __str__(self):
return self.image
def save(self,force_insert=False, force_update=False, using=None):
if not self.image:
return
super(IMGResize, self).save()
global image_ref
image_ref = self.image
super(IMGResize, self).save()
这里它是为图像生成一些默认名称,我如何才能得到图像的名称?你知道吗
<强>2。如何为调整大小的图像自动生成名称:
在我的上一个模型中,我得到了一些图片,我试图用同一个模型中的其他模型来调整其大小并存储在其他路径中型号.py文件。你知道吗
这是我的模型:
from .resize_code import image_resize
class Profile(models.Model):
image = models.ForeignKey(IMGResize, related_name='profiles', on_delete=models.CASCADE)
name=models.CharField(max_length=10)
image_width=models.PositiveIntegerField(null=True, blank=False)
image_height=models.PositiveIntegerField(null=True, blank=False)
class Meta:
db_table = 'profiles'
unique_together=('name','image')
def __str__(self):
return self.name
def save(self,force_insert=False, force_update=False, using=None):
global image_ref
super(Profile, self).save()
image_resize(self,image_ref)
super(Profile, self).save()
这是我的照片_代码.py文件:
def image_resize(self,image,force_insert=False, force_update=False, using=None):
if not image:
return
img = Image.open(os.path.abspath(str(image)), 'r')
img = resize_contain(img, [self.image_width, self.image_height])
path='resized_images/contain.jpeg'
img.save(path, img.format)
在这里调整大小_代码.py我是硬编码的名称,而不是重新调整大小的图像生成它每次(路径='重新调整大小的\u图像)/包含.jpeg')
这是我的序列化程序.py文件:
class profilesSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('name','image_width','image_height',)
class IMGResizeSerializer(serializers.ModelSerializer):
profiles = profilesSerializer(many=True,read_only=False)
image = Base64ImageField()
class Meta:
model = IMGResize
fields = ('id','image','profiles',)
def create(self, validated_data):
profiles_data = validated_data.pop('profiles')
image = IMGResize.objects.create(**validated_data)
for profile_data in profiles_data:
Profile.objects.create(image=image, **profile_data)
return image
谢谢
您可以从相应的视图本身检索上载图像的名称。参见下面的示例
上传的文件将是^{} 类型,这是^{} 的子类。它有^{} 属性,提供上传文件的名称
相关问题 更多 >
编程相关推荐