python - 如何显示产品的 Django 其他嵌套评论?
问题描述
我为我的项目创建了嵌套评论。我有我的模型和序列化器。我想当我检索产品以显示产品详细信息时,产品评论也会显示。我该怎么做?这是我的代码:
#models.py
class Comment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='comments')
parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True,blank=True, related_name='replys')
body = models.TextField()
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'{self.user} - {self.body[:30]}'
class Meta:
ordering = ('-created',)
#serializers.py
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ['id', 'category', 'name', 'slug', 'image_1',
'image_2', 'image_3', 'image_4', 'image_5',
'description', 'price', 'available', 'created', 'updated']
lookup_field = 'slug'
extra_kwargs = {
'url': {'lookup_field': 'slug'}
}
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = ['id', 'user', 'product', 'parent', 'body', 'created']
#views.py
class RetrieveProductView(generics.RetrieveAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
permission_classes = (permissions.AllowAny,)
lookup_field = 'slug'
解决方案
您还没有显示您的 ProductSerializer 但如果您按照示例进行操作,它确实应该可以工作:
class ProductSerializer(serializers.ModelSerializer):
comments = CommentSerializer(many=True, read_only=True)
class Meta:
model = Product
fields = ['name', '...', 'comments']