【发布时间】:2020-11-15 13:25:45
【问题描述】:
您好,我有一个名为 foto 的列,我使用此列来存储我的 firebase 存储的路径,因此我不需要 django 存储,但每次我上传我的文件时,django 都会生成一个新文件。
from django.db import models
from users.models import User
class Empleado(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
fecha_contratacion = models.DateField(null=True,blank=True)
fecha_nacimiento = models.DateField(null=True,blank=True)
curp = models.CharField(unique=True, max_length=200)
rfc = models.CharField(unique=True, max_length=200)
telefono = models.CharField(max_length=200)
foto = models.ImageField(blank=True, null=True, upload_to='fotos/')
我也有一个 django rest 框架序列化器,我的代码在哪里将文件上传到我的 django 项目?
from rest_framework import serializers
from .models import Empleado
from django.core import serializers as django_serializers
from users.serializers import UserSerializer, User
from .firebase import Firebase
class EmpleadoSerializer(serializers.ModelSerializer):
"""
Currently unused in preference of the below.
"""
fecha_contratacion = serializers.DateField()
fecha_nacimiento = serializers.DateField()
curp = serializers.CharField(required=True)
rfc = serializers.CharField(required=True)
telefono = serializers.CharField(required=True)
user = UserSerializer(required=False)
foto = serializers.ImageField(required=False)
class Meta:
model = Empleado
fields = ('foto','user_id','user','fecha_contratacion','fecha_nacimiento','curp','rfc','telefono')
def create(self, validated_data):
"""
"""
user_data = validated_data.pop('user')
user = UserSerializer.create(UserSerializer(), validated_data=user_data)
empleado = Empleado.objects.create(user=user,**validated_data)
return empleado
def update(self, instance, validated_data):
if 'user' in validated_data:
user_data = validated_data.pop('user')
user = User.objects.get(id=instance.user_id)
user = UserSerializer.update(UserSerializer(), user, validated_data=user_data)
instance.fecha_contratacion = validated_data.get('fecha_contratacion', instance.fecha_contratacion)
instance.fecha_nacimiento = validated_data.get('fecha_nacimiento', instance.fecha_nacimiento)
instance.curp = validated_data.get('curp', instance.curp)
instance.rfc = validated_data.get('rfc', instance.rfc)
instance.telefono = validated_data.get('telefono', instance.telefono)
if 'foto' in validated_data:
instance.foto = validated_data.get('foto', instance.foto)
instance.save()
firebase = Firebase()
firebase.upload(instance.foto)
else:
instance.save()
return instance
【问题讨论】:
标签: python django django-rest-framework model frameworks