【发布时间】:2022-11-25 02:59:46
【问题描述】:
我正在研究调整图像大小的 api。我只想上传一个文件,将其保存并调整大小并将其保存在另一个文件夹中。
模型.py
from django.db import models
from django.conf import settings
from django_resized import ResizedImageField
from django.contrib.auth import get_user_model
User = get_user_model()
class Image(models.Model):
file = models.ImageField(upload_to="files/")
file1 = models.ImageField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
def save(self, *args, **kwargs):
if self.file:
self.file1 = ResizedImageField(self.file, size=[200, 200])
super(Image, self).save(*args, **kwargs)
视图.py
from rest_framework import generics
from .models import Image
from .serializers import ImageSerializer
class ListCreateImage(generics.ListCreateAPIView):
serializer_class = ImageSerializer
def get_queryset(self):
queryset = Image.objects.filter(author=self.request.user)
return queryset
def perform_create(self, serializer):
kwargs = {"author": self.request.user}
serializer.save(**kwargs)
class DetailImage(generics.RetrieveAPIView):
serializer_class = ImageSerializer
def get_queryset(self):
queryset = Image.objects.filter(author=self.request.user)
return queryset
序列化程序.py
from rest_framework import serializers
from .models import Image
class ImageSerializer(serializers.ModelSerializer):
class Meta:
model = Image
fields = ("file", "file1")
read_only_fields = (
"id",
"author",
)
问题是我的代码有效,但 HTML 表单要求我提供 2 个文件,我想只使用一个文件获得相同的结果。
所以输出应该是这样的:
{
"file": "http://127.0.0.1:8000/files/register_og.png",
"file1": "http://127.0.0.1:8000/files/thumb200px/register_og.jpg"
},
【问题讨论】:
-
添加 file1 到
read_only_fields如果它应该是只读的
标签: python django django-rest-framework