Как извлечь отдельный элемент с помощью 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
вместо того, чтобы создавать другой сериализатор для страницы с подробным описанием товара.