回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>您好,我有一个名为foto的列,我使用这个列存储来自firebase存储的路径,因此我不需要django存储,但每次上载文件时,django都会生成一个新文件</p>
<pre><code>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/')
</code></pre>
<p>我也有一个django rest框架序列化程序,我的代码在哪里将文件上传到django项目</p>
<pre><code>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
</code></pre>