Python 3.x 在Django FileField中,如何设置还包含随机url的file.name?
编辑 我正在尝试修改上传文件的名称,以便在其中包含一些url。在我的例子中,它是自定义的“file_url”变量。但是,当前结果为:“filename”,但预期结果应为: 以下是my View.py:Python 3.x 在Django FileField中,如何设置还包含随机url的file.name?,python-3.x,django,django-models,django-rest-framework,django-views,Python 3.x,Django,Django Models,Django Rest Framework,Django Views,编辑 我正在尝试修改上传文件的名称,以便在其中包含一些url。在我的例子中,它是自定义的“file_url”变量。但是,当前结果为:“filename”,但预期结果应为: 以下是my View.py: class CreateImage(CreateAPIView): permission_classes = (IsAuthenticated,) model = models.Image serializer_class = serializers.ImageSerial
class CreateImage(CreateAPIView):
permission_classes = (IsAuthenticated,)
model = models.Image
serializer_class = serializers.ImageSerializer
def get_serializer(self, container, *args, **kwargs):
serializer_class = self.get_serializer_class()
kwargs["context"] = self.get_serializer_context()
old_filename = self.request.FILES['image'].name
if self.request.FILES:
if container == 'products':
data = self.request.data.copy()
product_name = data["product_name"]
file_url = f"{settings.MEDIA_DOMAIN}{container}/"
new_filename = get_product_new_filename(old_filename, product_name)
data['image'].name = file_url + new_filename
kwargs["data"] = data
return serializer_class(*args, **kwargs)
和简单的参考模型:
class Image(models.Model):
image = models.FileField()
def __str__(self):
return self.image.name
您知道如何在文件名中包含给定的url吗?[编辑]问题似乎带有“/”符号。是否可以将其包含在名称中?
解决方法是创建额外的字段,比如image_url as CharField,并将其保存在那里,但也许有一种方法可以避免重复表输入
提前谢谢 有那个url的原因是什么?这是一个很好的观点-原因是什么:)。我不能回答同样的问题,我决定插入额外的字段来存储正确的链接。谢谢你的评论!请将您的解决方案作为答案写下来,以便其他人看到