Quantcast
Channel: Modelo User de django extendido en Django Rest Framework. Guardar un usuario vinculado al usuario logueado - Stack Overflow en español
Viewing all articles
Browse latest Browse all 2

Modelo User de django extendido en Django Rest Framework. Guardar un usuario vinculado al usuario logueado

$
0
0

Es requerimiento del proyecto partir de una base de datos ya existente, en la cuál existe una tabla empleados que extiende el modelo User de django a través del campo usuarioweb.

Necesito crear un servicio que al guardar un pedido de venta guarde el empleado (idemplea) relacionado al usuario logueado. Hasta aquí solo usé vistas genéricas probablemente debería usar otras clases, agradecería si alguien puede orientarme sobre como lograr este comportamiento y que métodos tendría que sobre escribir.

No sé si sea relevante pero la autenticación es por token: rest_framework_simplejwt

Sólo muestro algunos campos de los modelos a modo de ejemplo.

model.py

class User(AbstractUser):    passclass Empleados(models.Model):    idemplea = models.SmallIntegerField(primary_key=True)    emplea = models.CharField(max_length=35)    tipoemplea = models.CharField(max_length=1)    usuariweb = models.ForeignKey(User, models.DO_NOTHING, verbose_name="Usuario Web", blank=True, null=True) class Pedidosventas(models.Model):    idpedidoventa = models.AutoField(primary_key=True)    idemplea = models.ForeignKey(Empleados, models.DO_NOTHING, db_column='idemplea')    idempleaanulad = models.ForeignKey(Empleados, models.DO_NOTHING, related_name="pv_emplea_anulad", db_column='idempleaanulad', blank=True, null=True)    idempleacerrad = models.ForeignKey(Empleados, models.DO_NOTHING, related_name="pv_emplea_cerrad", db_column='idempleacerrad', blank=True, null=True)

serializers.py

class EmpleadosSerializer(serializers.ModelSerializer):    class Meta:        model = Empleados        fields='__all__'class UserSerializer(serializers.ModelSerializer):    class Meta:        model = User        fields=('username', 'password')         extra_kwargs={ 'password': { 'write_only':True } }    def create(self, validated_data):        user = User( username =  validated_data['username'] )          user.set_password(validated_data['password'])        user.save()        return userclass PedidosventasSerializer(serializers.ModelSerializer):    nombrefantas = CuentasclientesSerializer(source='idcuentaclient', read_only=True)    emplea = EmpleadosSerializer(source='idemplea', read_only=True)    empleacerrad = EmpleadosSerializer(source='idempleacerrad', read_only=True)    empleaanulad = EmpleadosSerializer(source='idempleaanulad', read_only=True)    class Meta:        model = Pedidosventas        fields='__all__'

apiviews.py

class PedidosventasList(generics.ListCreateAPIView):    queryset = Pedidosventas.objects.all()    serializer_class = PedidosventasSerializerclass PedidosventasDetalle(generics.RetrieveDestroyAPIView):    queryset = Pedidosventas.objects.all()    serializer_class = PedidosventasSerializer    class PedidosventasUpdate(generics.UpdateAPIView):    queryset = Pedidosventas.objects.all()    serializer_class = PedidosventasSerializer      

Viewing all articles
Browse latest Browse all 2

Latest Images



Latest Images