при фильтрации данных на стороне сервера Невозможно разрешить ключевое слово «приоритет» в поле. Варианты выбора: имя события, идентификатор, ключ, отметка времени - PullRequest
0 голосов
/ 27 апреля 2020

Я использую django -rest-framework-datatables для фильтрации / разбивки на страницы / сортировки данных при использовании rest-framework, он корректно работает со всеми полями, кроме одного, он показывает ошибку "Не удается разрешить ключевое слово" priority "в поле . Выбор: имя события, идентификатор, ключ. «Я думаю, что проблема заключается в следующем: это поле не отображается в таблице базы данных

модель

class CachedEvent(models.Model):
  key = models.CharField(max_length=255)
  timestamp = models.DateTimeField()
  eventname = models.CharField(max_length=255)

   @property
   def priority(self):
      eventtype, created = EventType.objects.get_or_create(
        eventname=self.eventname
      )
     return eventtype.priority

viewSet:

class EventViewSet(viewsets.ReadOnlyModelViewSet):
   queryset = CachedEvent.objects.all()
   serializer_class = CachedEventSerializer

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

class CachedEventSerializer(serializers.ModelSerializer):
 id = serializers.CharField(source='original_id')

 class Meta:
    model = CachedEvent
    fields = ['key', 'timestamp', 'id', 'eventname', 'priority']

может помочь мне, пожалуйста

1 Ответ

0 голосов
/ 27 апреля 2020

На самом деле приоритет - это не поле модели, а свойство. вот почему вы получаете ошибку. Вы должны явно указать приоритет для полей сериализатора.

class CachedEventSerializer(serializers.ModelSerializer):
 id = serializers.CharField(source='original_id')
 priority = serializers.ReadOnlyField()

 class Meta:
    model = CachedEvent
    fields = ['key', 'timestamp', 'id', 'eventname', 'priority']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...