Я спросил related question earlier todayПреобразование нескольких querysets в JSON в Джанго
В этом случае, у меня есть 4 результатов QuerySet:
action_count = Action.objects.filter(complete=False, onhold=False).annotate(action_count=Count('name'))
hold_count = Action.objects.filter(onhold=True, hold_criteria__isnull=False).annotate(action_count=Count('name'))
visible_tags = Tag.objects.filter(visible=True).order_by('name').filter(action__complete=False).annotate(action_count=Count('action'))
hidden_tags = Tag.objects.filter(visible=False).order_by('name').filter(action__complete=False).annotate(action_count=Count('action'))
Я хотел бы, чтобы вернуть их к функции AJAX. Мне нужно преобразовать их в json, но я не знаю, как включить несколько запросов в одну и ту же строку json.
Это не будет реально работать. Вы не можете сериализовать такой набор запросов Django, потому что сами экземпляры модели не могут быть сериализованы непосредственно модулем 'json'. –
Хорошо, спасибо за подсказку! Я просто переписал код. Теперь фактические списки словарей создаются «на лету». Он должен работать, но он все еще не проверен. Возможно, это не самый элегантный способ ... –
Вы можете использовать ['values ()'] (https://docs.djangoproject.com/en/dev/ref/models/querysets/#values) или ['values_list () '] (https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values_list) вместо того, чтобы создавать словари таким образом, особенно, если любой из поля - это ForeingKey или что-то, что оно снова вернет неэриализуемый объект. 'json.dumps (list (Model.object.filter(). values ()))' например. –