2016-12-01 5 views
-2

Ich finde Nachricht zurück in Google, nicht finden. Was ist mein Code nicht post Werte korrekt? Ich brauche Hilfe für die richtige Lösung. Wie verwenden Sie formularbasierte generische Ansichten? Im desenv ein RestAPI, verstehe ich nicht Problem in meinem Code, ich laufe und zurück: Ich erhalte Nachricht, fließen. enter image description herePOST funktioniert nicht Django Rest Framework

enter image description here

views.py:

from snippets.models import Equipamento, Colaborador 
from snippets.serializers import EquipamentoSerializer, ColaboradorSerializer 
from rest_framework import mixins 
from rest_framework import generics 

class EquipamentoList(generics.ListCreateAPIView): 
    serializer_class = EquipamentoSerializer 

    def get_queryset(self): 
     queryset = Equipamento.objects.all() 
     id = self.request.query_params.get('id', None) 
     if id is not None: 
      queryset = queryset.filter(id=id) 
     return queryset 


# class ColaboradorList(generics.CreateAPIView): 
#  queryset = Colaborador.objects.all() 
#  serializer_class = ColaboradorSerializer 

#  def get_queryset(self): 
#   queryset = Colaborador.objects.all() 
#   id = self.request.query_params.get('id', None) 
#   if id is not None: 
#    queryset = queryset.filter(pk=pk) 
#   return queryset 

#  def create(self, request, pk): 
#   queryset = Colaborador.objects.all() 
#   return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 



# class ColaboradorDetail(generics.RetrieveUpdateDestroyAPIView): 
#  queryset = Colaborador.objects.all() 
#  serializer_class = ColaboradorSerializer 

class ColaboradorList(mixins.ListModelMixin, 
        mixins.CreateModelMixin, 
        generics.GenericAPIView): 
    queryset = Colaborador.objects.all() 
    serializer_class = ColaboradorSerializer 

    def get(self, request, *args, **kwargs): 
     return self.list(request, *args, **kwargs) 

    def post(self, request, *args, **kwargs): 
     return self.create(request, *args, **kwargs) 

class ColaboradorDetail(mixins.RetrieveModelMixin, 
        mixins.UpdateModelMixin, 
        mixins.DestroyModelMixin, 
        generics.GenericAPIView): 
    queryset = Colaborador.objects.all() 
    serializer_class = ColaboradorSerializer 

    def get(self, request, *args, **kwargs): 
     return self.retrieve(request, *args, **kwargs) 

    def put(self, request, *args, **kwargs): 
     return self.update(request, *args, **kwargs) 

    def delete(self, request, *args, **kwargs): 
     return self.destroy(request, *args, **kwargs) 

serializers.py

from rest_framework import serializers 
from rest_framework.validators import UniqueValidator 
from snippets.models import Equipamento, Colaborador, Propriedade, MotivoParada, Apontamento 

class EquipamentoSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    cod_equip = serializers.IntegerField(validators=[UniqueValidator(queryset=Equipamento.objects.all())]) 
    desc_equip = serializers.CharField(allow_blank=True, max_length=15, required=False) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.cod_equip = attrs.get('cod_equip', instance.cod_equip) 
      instance.des_equip = attrs.get('desc_equip', instance.desc_equip) 
      return instance 
     # Create new instance 
     return Equipamento(**attrs) 

class ColaboradorSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    cod_colab = serializers.IntegerField(validators=[UniqueValidator(queryset=Colaborador.objects.all())]) 
    nome_colab = serializers.CharField(max_length=30) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.cod_colab = attrs.get('cod_colab', instance.cod_colab) 
      instance.nome_colab = attrs.get('nome_colab', instance.nome_colab) 
      return instance 
     # Create new instance 
     return Colaborador(**attrs) 

class ApontamentoSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    criado = serializers.DateTimeField(read_only=True) 
    apont_inicio = serializers.TimeField() 
    apont_fim = serializers.TimeField() 
    duracao = serializers.TimeField() 
    equipamento = serializers.PrimaryKeyRelatedField(queryset=Equipamento.objects.all()) 
    colaborador = serializers.PrimaryKeyRelatedField(queryset=Colaborador.objects.all()) 
    propriedade = serializers.PrimaryKeyRelatedField(queryset=Propriedade.objects.all()) 
    m_parada = serializers.PrimaryKeyRelatedField(queryset=MotivoParada.objects.all()) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.criado = attrs.get('criado', instance.criado) 
      instance.apont_inicio = attrs.get('apont_inicio', instance.apont_inicio) 
      instance.apont_fim = attrs.get('apont_fim', instance.apont_fim) 
      instance.duracao = attrs.get('duracao', instance.duracao) 
      instance.equipamento = attrs.get('equipamento', instance.equipamento) 
      instance.colaborador = attrs.get('colaborador', instance.colaborador) 
      instance.propriedade = attrs.get('propriedade', instance.propriedade) 
      instance.m_parada = attrs.get('m_parada', instance.m_parada) 
      return instance 
     # Create new instance 
     return Apontamento(**attrs) 

class PropriedadeSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    cod_prop = serializers.IntegerField(validators=[UniqueValidator(queryset=Propriedade.objects.all())]) 
    desc_prop = serializers.CharField(max_length=30) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.cod_prop = attrs.get('cod_prop', instance.cod_prop) 
      instance.des_prop = attrs.get('desc_prop', instance.desc_prop) 
      return instance 
     # Create new instance 
     return Propriedade(**attrs) 

class MotivoParadaSerializer(serializers.Serializer): 
    id = serializers.IntegerField(read_only=True) 
    cod_mparada = serializers.IntegerField(validators=[UniqueValidator(queryset=MotivoParada.objects.all())]) 
    desc_mparada = serializers.CharField(max_length=30) 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance, given a dictionary 
     of deserialized field values. 

     Note that if we don't define this method, then deserializing 
     data will simply return a dictionary of items. 
     """ 
     if instance: 
      # Update existing instance 
      instance.id = attrs.get('id', instance.id) 
      instance.cod_mparada = attrs.get('cod_mparada', instance.cod_mparada) 
      instance.des_mparada = attrs.get('desc_mparada', instance.desc_mparada) 
      return instance 
     # Create new instance 
     return MotivoParada(**attrs) 

urls.py

from django.conf.urls import url 
# from snippets.views import EquipamentoList, ColaboradorList, ColaboradorDetail 
from snippets import views 
from rest_framework.urlpatterns import format_suffix_patterns 

urlpatterns = [ 
# url(r'^snippets/$', views.snippet_list), 
# url(r'^snippets/(?P<pk>[0-9]+)/$', views.snippet_detail), 
    # url('^equipamento/(?P<id>.+)/$', EquipamentoList.as_view()), 
    #url('^colab/(?P<id>.+)/$', ColaboradorList.as_view()), 
    url('^colab/$', views.ColaboradorList.as_view()), 
    url('^colab_add/(?P<pk>[0-9]+)/$', views.ColaboradorDetail.as_view()), 
] 

urlpatterns = format_suffix_patterns(urlpatterns)I find message return in google, not find solv problem? 

Hilfe. Was ist mein Code nicht Werte post? Ich brauche Hilfe für die richtige Lösung.

+0

Sie haben alles, was Sie in der Fehlermeldung benötigen ... – opalczynski

Antwort

0

Die Fehlermeldung ist ziemlich einfach. Ihre Serializer verwenden die Methode restore_object, die in Rest Framework 3 veraltet ist. Entweder downgraden Sie Ihre Django Rest Framework-Version auf 2.x, oder (empfohlen) schreiben Sie Ihren Code neu, damit er mit der neuesten Version von Rest Framework kompatibel ist.

Verwandte Themen