Как убрать пробелы из возвращенного поля из DRF-модели Serializer? - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть следующий код для моего сериализатора DRF:

class ObjectSerializer(serializers.ModelSerializer):
class Meta:
    model = models.MyModel
    fields = ('field1', 'field2')

Мой код запроса выглядит следующим образом:

class MyAPI(ListAPIView):
http_method_names = ['get']
serializer_class = ObjectSerializer

def get_queryset(self):
    queryset = MyModel.objects.values('field1', 'field2').filter(someField='SomeValue').all()
    return queryset

field1 - это поле char с конечным пробелом.Я пытаюсь удалить все эти пробелы в наборе запросов.Как я могу сделать это?Я попытался передать оператор extra_kwargs = {"content": {"trim_whitespace": True}} в мой сериализатор, но он не удаляет пробелы в поле.Является ли то, что я делаю неправильно, очевидно, и я просто упускаю это?

Редактировать: Вот как выглядит код модели:

class MyModel(models.Model):
field1 = models.CharField(db_column='FIELD1', max_length=24)  # Field name made lowercase.
field2 = models.CharField(db_column='FIELD2', max_length=60, blank=True, null=True)  # Field name made lowercase.

class Meta:
    managed = False
    db_table = 'mytable'

1 Ответ

0 голосов
/ 07 декабря 2018

Использование Trim() функции базы данных вместе с .annotate()

from django.db.models.functions import Trim


class MyAPI(ListAPIView):
    http_method_names = ['get']
    serializer_class = ObjectSerializer

    def get_queryset(self):
        queryset = MyModel.objects.<b>annotate(
            field1_new=Trim('field1'), field2_new=Trim('field2')
        ).values('field1_new', 'field1_new').</b>filter(someField='SomeValue').all()
        return queryset
...