Как извлечь отдельный элемент с помощью DRF

Я хочу отобразить страницу с подробной информацией о продукте с помощью drf, но постоянно сталкиваюсь с одной ошибкой за другой.

urls.py

path('product/id>', views.product_detail_view.as_view(), name='product-detail'),

models.py
class Product(models.Model):
    categories = models.ManyToManyField(Category)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="product_owner")
    item = models.CharField(max_length=150)
    slug = models.SlugField(max_length=255, blank=True, null=True)
    brand = models.CharField(max_length=255, default="brand")
    image = models.ImageField(upload_to="images/products/")
    label = models.CharField(max_length=254, default='', blank=True, null=True)

serializers.py
class product_detail_serializer(serializers.ModelSerializer):
    category = serializers.SerializerMethodField()

    class Meta:
        model = Product
        fields = ("id", "categories", "item", "slug", "image")
    lookup_field = "id"

views.py
class product_detail_view(generics.RetrieveAPIView):
    serializer_class = product_detail_serializer
    lookup_field = "id"

Я хочу знать, что я сделал неправильно здесь

Вы можете попробовать определить id внутри класса product_detail_serializer, а затем включить его в путь к шаблонам url следующим образом:


serializers.py
class product_detail_serializer(serializers.ModelSerializer):
    category = serializers.SerializerMethodField()
    id = serializers.IntegerField(read_only=True)

Затем включите id в путь urlpatherns

path('product/<int:id>',views.product_detail_view.as_view(),name='product
detail'),

Я в принципе не могу объяснить, почему это сработало. Я использовал сериализатор для product вместо того, чтобы создавать другой сериализатор для страницы с подробным описанием товара.

Вернуться на верх