2016-03-29 17 views
2

django Restフレームワークを使用して、ショッピングカートに商品を追加するためのAPIを書き込もうとしています。私はシンプルなserializer.pyとview.pyを書いた。POST APIの表示可能なフィールドに表示されないフィールド - django Rest Framework

model.py:

class Product(models.Model): 
    title = models.CharField(max_length=100,unique=True) 
    description = models.TextField() 
    image_url = models.URLField(max_length=200) 
    price = models.DecimalField(max_digits=8,decimal_places=2) 
    date_available = models.DateField 
class LineItem(models.Model): 
    product = models.ForeignKey(Product) 
    unit_price = models.DecimalField(max_digits=8,decimal_places=2) 
    quantity = models.IntegerField() 

serializers.py

class LineItemSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = LineItem 
     fields = ('product', 'unit_price', 'quantity') 

    def product(self, instance): 
     return instance.product.title 

views.py

class RESTforCart(APIView): 
    def post(self, request, *args, **kwargs): 
     #print request.POST['product'] 
     product = Product.objects.get(id=request.POST['product']) 
     cart = request.session['cart'] 
     cart.add_product(product) 
     request.session['cart'] = cart 
     lists=request.session['cart'].items 
     serializer = LineItemSerializer(lists,many=True) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data, status=status.HTTP_201_CREATED) 
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

def get(self, request, *args, **kwargs): 
    lists=request.session['cart'].items 
    serializer = LineItemSerializer(lists,many=True) 
    return Response(serializer.data) 

urls.py

(r'^shoppinglists2/$', RESTforCart.as_view()), 

[マイ閲覧可能なビューは次のようになります。ただ、コンテンツfield.No単価と数量フィールド]

enter image description here

+0

画像を確認するためのリンクをクリックしてください閲覧可能なAPIでフォームを表示するためにserializer_class = <your serializer>を追加する必要があります。誰でも私を助けることができますか? –

+0

content textareaは、作成したいフィールドを持つ 'json'オブジェクトを期待しています – iulian

答えて

1

あなたの閲覧可能なAPIがOKになります。コンテンツフィールドにJSONオブジェクトを挿入し、それをapiにポストする必要があります。あなたのためにJSONは次のようになります。

{ 
    "product": 1, 
    "unit_price": "22", 
    "quantity": 5 
} 
0
from rest_framework.renderers import (
             HTMLFormRenderer, 
             JSONRenderer, 
             BrowsableAPIRenderer, 
            ) 

class CustomerApi(APIView): 

    serializer_class = CustomerSerializer 
    renderer_classes = (BrowsableAPIRenderer, JSONRenderer, HTMLFormRenderer) 

    ..... give whatever methods here 

あなたは

関連する問題