Получение ошибки в django rest framework. Неподдерживаемый поиск 'text' для JSONField или соединение в поле недопустимо, возможно, вы имели в виду точное или iexact? - PullRequest
0 голосов
/ 22 октября 2019

Я получаю эту ошибку:

Unsupported lookup 'text' for JSONField or join on the field not permitted, perhaps you meant exact or iexact?

Я не могу понять, как решить эту проблему.

Я получаю эту ошибку, когда пытаюсь выполнить запрос к полю с вложенными данными json.

Я использую Mongodb и движок Djongo для подключения и фреймворка id Django rest framework.

Пожалуйста, помогите мне решить эту проблему.

Просмотр:

@api_view(['GET'])
def gettweets(request):
    if request.method == 'GET':
        tweets = TwitterMaster.objects.all()            
        tt = request.query_params.get('tt')     
        if tt:
            condition = Q(data__text__contains=tt)
            #condition = Q(tweet_text__contains=tt)&Q(tweet_favorite_count=13)
            tweets = tweets.filter(condition)
        # srz = serializers.serialize('json',tweets)
        #print(tweets.query)

        serializer = TwitterdashappSerializer(tweets, many=True)
        totCount = 0
        if serializer.data is not None:
            totCount = len(serializer.data) 
        respData = {"totCount":totCount}        
        return Response({"message": "success", "data":respData},200)
    return Response({"message": "OOPS","error_code":"gettweets_404"},404)

Модель:

from djongo import models
from jsonfield import JSONField

class TwitterMaster(models.Model):
    tweet_id = models.BigIntegerField(primary_key=True)
    data = JSONField(default='', blank=True)
    location = models.CharField(max_length=250, blank=True, null=True)
    latitude = models.CharField(max_length=250, blank=True, null=True)
    longitude = models.CharField(max_length=250, blank=True, null=True)

Сериализатор:

class TwitterdashappSerializer(serializers.Serializer):
    tweet_id =   serializers.CharField()
    data = serializers.JSONField()
    location = serializers.CharField()
    latitude = serializers.CharField()
    longitude = serializers.CharField()

    def create(self, validated_data):
        instance = TwitterMaster.objects.create(**validated_data)
        return instance
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...