我想使用drf显示产品详细信息页面,但我总是遇到一个又一个错误。
urls.py
path('product/<int: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"
def get_category(self, obj):
return obj.get_category_display()
views.py
class product_detail_view(generics.RetrieveAPIView):
serializer_class = product_detail_serializer
lookup_field = "id"我现在得到的错误是'Product has no attribute 'get_category_display'
请告诉我如何修复这个错误?
发布于 2021-10-25 21:02:51
您可以尝试在product_detail_serializer类中定义id,然后将其包含在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'),发布于 2021-10-27 17:14:16
我基本上不能解释为什么这是可行的。我使用了product的序列化程序,而不是为产品详细信息页面创建另一个序列化程序。
https://stackoverflow.com/questions/69713912
复制相似问题