Как напечатать поля модели как json вывод? - PullRequest
0 голосов
/ 17 марта 2020

views.py

def districts_list(request):
    obj_districts_list = Districts.objects.all()
    data = serializers.serialize(
        'json', obj_districts_list, fields=('district_name'))

    return HttpResponse(data, content_type="application/json")

models.py

class Districts(models.Model):
    id = models.AutoField(primary_key=True)
    district_name = models.CharField(max_length=40)
    country = models.ForeignKey('Country', on_delete=models.CASCADE)
    state = models.ForeignKey('States', on_delete=models.CASCADE)

    def __str__(self):
        return '{}'.format(self.district_name)

ВЫХОД:

Output is JSON format

Но я просто хочу, чтобы поля внутри Accounts.districts выводились в формате JSON.

1 Ответ

0 голосов
/ 17 марта 2020

Используйте QuerySet.values() для извлечения интересующих вас полей в виде диктов, затем передайте это json.dumps(), ie:

>>> qs = User.objects.values("username", "first_name", "last_name", "email", "userprofile__nickname")
>>> print(json.dumps(list(qs), indent=2))
[
  {
    "username": "toto", 
    "first_name": "", 
    "last_name": "", 
    "email": "toto@example.com", 
    "userprofile__nickname": "Toto le toto"
  }, 
  {
    "username": "root", 
    "first_name": "Root", 
    "last_name": "Root", 
    "email": "root@example.com", 
    "userprofile__nickname": "Root"
  }, 
]

В зависимости от ваших моделей В полях может потребоваться предоставить пользовательский подкласс JSONDecoder для даты и времени и других типов, которые не обрабатываются напрямую по умолчанию JSONEncoder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...