0

Ich versuche nur, um Anfrage mit meinem Feld zu bekommen. Aber in dieser Get-Anfrage möchte ich nicht pk verwenden. Ich möchte nur Barcode verwenden, den Sie unten sehen können.Django Rest Framework Anfragen mit benutzerdefinierten URL

Auch ich bin neu auf Django:

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') 

Auch dies meine Urls ist.

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

und das ist meine Ansicht.

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

Antwort

0

Versuchen lookup_field = 'barcode' in Ihrem ProductViewSet Einstellung, dh

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

und setzen RegexMuster in Urls (mind [0-9]{1,13}, wird es eine beliebige Anzahl entsprechen, die seine Länge zwischen 1 und 13 ist):

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

also checkout code for class GenericAPIView

+0

Ich habe versucht, sagte Ihr aber jetzt ist es zurück 404. Hat nichts geändert –

+0

@MuratKaya behalten Sie die URL, wie Sie gehalten haben und versuchen, das Nachschlagen Feld = 'Barcode' in der Ansicht. –

+0

@MuratKaya können Sie die Antwort.data in beiden Fällen senden? –

Verwandte Themen