Сериализатор жалуется на отсутствие атрибута _meta - PullRequest
0 голосов
/ 13 июля 2020

Я выполняю запрос Django к следующей таблице и хочу преобразовать полученный набор запросов в JSON:

class City(models.Model):
    city = models.CharField(max_length=50)
    city_ascii = models.CharField(max_length=50)
    lat = models.FloatField(default=0.0)
    lng = models.FloatField(default=0.0)
    country = models.CharField(max_length=50)
    country_abbrev2 = models.CharField(max_length=2)
    country_abbrev3 = models.CharField(max_length=3)
    region = models.CharField(max_length=50)

Запрос пытается получить список всех города в данной стране 'country_abbrev' (без дубликатов):

cities = City.objects.filter(country_abbrev2=country_abbrev).values('city').distinct()
cities_json = serializers.serialize('json', cities)
return HttpResponse(cities_json, content_type='application/json')

Запрос возвращает эту ошибку:

Error: AttributeError: 'dict' object has no attribute '_meta'

Теперь этот другой запрос работает, но возвращает модель ' 'и' pk 'в дополнение к полю' city ', и мне они не нужны.

data = serializers.serialize('json', City.objects.filter(country_abbrev2=country_abbrev).distinct(), fields=('city'))
return HttpResponse(data, content_type='application/json')

Есть ли способ исправить первый запрос? Или есть способ лучше? Этот запрос находится в представлении API, и я действительно хотел бы просто передать массив значений, таких как `` ['city1', 'city2', ...], который мой JavaScript может проанализировать на стороне клиента.

1 Ответ

0 голосов
/ 13 июля 2020

Сериализатор ожидает общий набор запросов, например:

cities = City.objects.filter(country_abbrev2=country_abbrev).only('city').distinct()

, который переводит сериализатор в

cities_json = serializers.serialize('json', cities, fields=('city'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...