首页 > 解决方案 > 对象没有“get_category_display”

问题描述

我想使用 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'

请问我该如何解决这个错误?

标签: pythondjangodjango-rest-framework

解决方案


我基本上无法解释为什么会这样。我使用序列化程序product而不是为产品详细信息页面创建另一个序列化程序。


推荐阅读