Json 序列化django rest中的外键
我试图获取属于特定产品的评论,所以假设我访问api中的数据Json 序列化django rest中的外键,json,django,rest,serialization,django-rest-framework,Json,Django,Rest,Serialization,Django Rest Framework,我试图获取属于特定产品的评论,所以假设我访问api中的数据 api/userreview/productname 使用此视图 @api_view(['GET', 'POST']) @permission_classes((IsAuthenticated,)) def product_userreview(request,productname): try: snippets = product_review.objects.filter(product_id__slug = prod
api/userreview/productname
使用此视图
@api_view(['GET', 'POST'])
@permission_classes((IsAuthenticated,))
def product_userreview(request,productname):
try:
snippets = product_review.objects.filter(product_id__slug = productname)
except snippets.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
serializer = productReviewSerializer(snippets)
return Response(serializer.data)
这个班呢
class product_review(models.Model):
product=models.ForeignKey('product',related_name='product_review',null=True,on_delete=models.SET_NULL)
user=models.ForeignKey('UserProfile',related_name='user_review',null=True,on_delete=models.SET_NULL)
rating=models.DecimalField(max_digits=2,decimal_places=1,null=True,blank=True,validators=[MaxValueValidator(5.0),MinValueValidator(0.0)])
reviews=models.TextField(null=True,blank=True)
还有这个序列化程序
class productReviewSerializer(serializers.ModelSerializer):
product = serializers.CharField(read_only='True')
username = serializers.CharField(read_only='True')
class Meta:
model = product_review
fields = ['product','username','rating','reviews']
所以当我运行它时,它只显示空白的{}
json,但是当我替换
product\u id\uu slug=productname
评级为4级的
然后给出正确的输出
因此,我认为序列化程序中可能存在一些错误。请帮助我,并告诉我我做错了什么?serializer=productReviewSerializer(snippets,many=True)你能解释一下这背后的逻辑吗………为什么它在两个相同类型的查询上表现不同?在运行manage.py runserver
的同时,通过将原始sql查询打印到控制台,来了解它们。请参阅将SQL语句打印到控制台。