django - FieldError at/Related Field 得到无效查找 : is_null

标签 django django-rest-framework django-views

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

FieldError 在/ 相关字段得到无效查找:is_null

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

#序列化器

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)

最佳答案

你的线路

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

应该是

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

关于django - FieldError at/Related Field 得到无效查找 : is_null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64833665/

相关文章:

django - 在 Django 中为模型创造完整历史的最佳方式是什么?

Django:如何在ajax中返回模型表单集并在模板中使用

python - 当本地主机正在工作时,我无法通过 IP 地址看到我的 Python Django 服务器

python - 如何在 Django 中测试数据库连接?

python - Django 和 Angular 2 templateUrl

django - 使用 django-rest-framework 获取模型的随机对象

get_absolute_url() 中的 Django reverse() 不起作用

python - 未实现错误 : Django doesn't provide a DB representation for AnonymousUser

python - 在 Django Python 中将一个 View 重定向到另一个 View

python - 没有名为 rest_authusers 的模块错误