0

私は自分のフィールドでリクエストを取得しようとしています。しかし、このリクエストで私はpkを使いたくありません。私はあなたが下のモデルを見ることができるバーコードを使用したいです。Django Rest FrameworkカスタムUrlでリクエストを取得

また、私はジャンゴに新しいです:

class Product(models.Model): 
    name = models.CharField(max_length=255) 
    price = models.CharField(max_length=255,null=True) 
    barcode = models.BigIntegerField(unique=True, validators=[MaxValueValidator(13)]) 
    cover_photo = models.ImageField(upload_to='images/', blank=True, null=True) 
    description = models.CharField(max_length=255,null=True) 
    product_url = models.CharField(max_length=255,null=True) 
    product_company = models.ForeignKey(Company, blank=True, null=True) 

    fields = ['barcode', 'name', 'cover_photo', 'product_url', 'price'] 
    def __unicode__(self): 
     return self.name.encode('utf-8') 

はまた、これは私のURLです。

url(r'^api/products/(?P<barcode>)/$',product_detail, name="product_detail"), 
product_detail = views.ProductViewSet.as_view({ 
    'get': 'retrieve' 
}) 

これは私の見解です。

class ProductViewSet(viewsets.ReadOnlyModelViewSet): 
    queryset = Product.objects.all() 
    serializer_class = ProductSerializer 

答えて

0

はすなわち

class ProductViewSet(viewsets.ReadOnlyModelViewSet): 
    queryset = Product.objects.all() 
    serializer_class = ProductSerializer 
    lookup_field = 'barcode' 

やURLでの正規表現のパターン設定(心[0-9]{1,13}を、それはそのな長さは1と13の間にある任意の数と一致します)、あなたのProductViewSetlookup_field = 'barcode'を設定してみてください:

url(r'^api/products/(?P<barcode>[0-9]{1,13})/$',product_detail, name="product_detail") 

also checkout code for class GenericAPIView

+0

今はその404を返します。何も変更していません –

+0

@ MuratKayaはあなたが保管しておいたURLを保持し、ビュー内でルックアップフィールド= 'barcode'を設定しようとしました。 –

+0

@ MuratKaya両方のケースでresponse.dataを送信できますか? –

関連する問題