Когда я пытаюсь отобразить подробную информацию, например, /api/products/12-345.67/
, я получаю detail: Not found.
в качестве ответа. Как видите, идентификаторы товара отформатированы как 12-345.67
. Моим первым подозреваемым был валидатор RegEx (приведенный ниже), но он работает одинаково с ним или без него.
Модель, сериализаторы, наборы представлений и URL-адреса определяются следующим образом:
# models.py:
class Product(models.Model):
product_id = models.CharField(max_length=9, primary_key=True)
name = models.CharField(max_length=40)
is_active = models.BooleanField(default=True)
def __str__(self):
return self.product_id
# serializers.py:
class ProductSerializer(serializers.ModelSerializer):
product_id = serializers.RegexField(regex='^\d{2}-\d{3}\.\d{2}$', max_length=9, min_length=9, allow_blank=False)
name = serializers.CharField(min_length=6, max_length=50, allow_blank=False)
class Meta:
model = Product
fields = '__all__'
class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
lookup_field = 'product_id'
# urls.py:
router = routers.DefaultRouter()
router.register(r'products', ProductViewSet, basename='products')
(...)
urlpatterns = [
path('api/', include(router.urls)),
(...)