python - 对象没有“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'
请问我该如何解决这个错误?
解决方案
我基本上无法解释为什么会这样。我使用序列化程序product
而不是为产品详细信息页面创建另一个序列化程序。
推荐阅读
- node.js - 安装 cuckoo 沙箱并在我用 cuckoo 沙箱服务器制作的服务器之间创建通信?
- regex - 无法获得最简单的问题匹配器来报告任何问题
- line - 需要定义一个覆盖另一条线的单线来为我的井字游戏创建一个 X
- java - 如何在 Java 中将 libGDX 的纹理转换为字节数组并再次返回
- postgresql - 尽管密码正确,但无法登录 PgAdmin 4
- php - 来自数据库的 Laravel8 图像
- docker - 在 docker-compose run (npm) 之后运行脚本
- javascript - 在 NodeJS 中使用 try/catch 和 aync/await 时出现语法错误
- python - AllenNLP 中的可分解注意力模型难以微调
- c# - 为所有解决方案共享一个 gRPC proto 文件