Я сейчас получаю файл из моего внешнего интерфейса и задаю свою модель следующим образом.
model.py
class User(models.Model):
name = models.CharField(max_length=50)
image= models.FileField(upload_to='image/', default=None)
intro= models.FileField(upload_to='info/', default=None)
view.py
class UserViewSet(viewsets.ModelViewSet):
serializer_class = LsRequestSerializer
queryset = User.objects.all()
http_method_names = ['post']
serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
field = '__all__'
def create(self, validated_data):
newUser = User.objects.create(
name = validated_data['name']
image = validated_date['image']
intro = validated_date['intro']
)
return newUser
Однако, когда я сделал HTTP.POST в Почтальоне, он дал неверный путь для сохранения изображения.
"http://localhost:8000/media/Koala.jpg"
Но исходя из моего дизайнав модели с path_to он должен давать:
"http://localhost:8000/media/image/Koala.jpg"
Обновление: Странно то, что когда я пытался обновить пользователя, дав новое изображение с помощью метода HTTP.Patch, он тогда имел правильный путь,
Обновление: оказывается, проблема в том, что у меня не может быть несколько входных файловых полей и upload_to различных подпапок.Как решить эту проблему?Если я поставлю сериализатор, как указано выше, он может найти правильный путь, но это также означает, что эти два поля обязательны для заполнения.Но на самом деле эти два поля являются необязательными.Но если я помещу оператор if вне функции create, он не сможет определить правильный путь.класс UserSerializer (serializers.ModelSerializer): класс Meta: модель = поле пользователя = ' все '
def create(self, validated_data):
newUser = User.objects.create(
name = validated_data['name']
image = None
intro = None
)
if validate_data['image']:
newUser.image = validate_data['image']
if validate_data['intro']:
newUser.image = validate_data['intro']
return newUser
Что не так с моим кодом?