【问题标题】:FieldError at / Related Field got invalid lookup: is_null/ 相关字段的 FieldError 查找无效:​​is_null
【发布时间】:2020-11-14 12:01:29
【问题描述】:

我正在创建一个评论 api,但是当我运行服务器时出现此错误:

字段错误在 / 相关字段查找无效:​​is_null

我不知道如何解决它。我正在创建一个嵌套的评论 api。这是我的代码:

#serializer

class CommentSerializer(serializers.ModelSerializer):
    loadParent = serializers.SerializerMethodField("loadPrentData")

    def loadPrentData(self, comment):
        comments = Comment.objects.filter(parent=comment)
        comments_ser = CommentSerializer(comments, many=True).data
        return comments_ser

    class Meta:
        model = Comment
        fields = ['id', 'user', 'product', 'parent', 'body', 'created', 'loadParent']


class ProductSerializer(serializers.ModelSerializer):
    comments = serializers.SerializerMethodField("loadProductComments")

    def loadProductComments(self, _product):
        _comments = Comment.objects.filter(product=_product, parent__is_null=True)
        _comments_ser = CommentSerializer(_comments, many=True, read_only=True).data
        return _comments_ser

    class Meta:
        model = Product
        fields = ['id', 'category', 'name', 'slug', 'image_1',
                  'image_2', 'image_3', 'image_4', 'image_5',
                  'description', 'price', 'available', 'created', 'updated', 'comments']
        lookup_field = 'slug'
        extra_kwargs = {
            'url': {'lookup_field': 'slug'}
        }

#views:

@api_view()
def AddComent(request, parent_id=None):
    parent = request.data.get("parent_id")
    serializer = CommentSerializer(data=request.data)
    if serializer.is_valid():
        if parent is not None:
            comment = Comment.objects.create(user=request.user, product=serializer.validated_data['product'],
                                             parent_id=serializer.validated_data['parent'],
                                             body=serializer.validated_data['body'])
        else:
            comment = Comment.objects.create(user=request.user, product=serializer.validated_data['product'],
                                             body=serializer.validated_data['body'])

        comments_ser = CommentSerializer(comment,many=False, read_only=True).data
        return Response(comments_ser, status=status.HTTP_200_OK)
    return Response(status=status.HTTP_400_BAD_REQUEST)

【问题讨论】:

    标签: django django-rest-framework django-views


    【解决方案1】:

    你的线路

    _comments = Comment.objects.filter(product=_product, parent__is_null=True)
    

    应该是

    _comments = Comment.objects.filter(product=_product, parent__isnull=True)
    

    【讨论】:

      猜你喜欢
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      相关资源
      最近更新 更多