Thursday, May 27, 2021

Re: Help with a huge database query.

I think a better approach to using QuerySet.defer() is to use .values() instead, explicitly specifying which fields you need to export.

Just FYI rest_framework handles this out of the box and provides an API to specify not only which fields to export but filters as well.

Regards
/d


On Fri, May 28, 2021 at 8:10 AM 'odrzen' via Django users <django-users@googlegroups.com> wrote:
Hello Django community o/

I want to create a API call in order to get all data from a specific model ( table ) - but I want to exclude-remove only specific fields from this.
So, I try to find a right way to execute this difficult and "heavy" query/request with a efficient way.
This is what I have achieved so far:

```
#from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
#from django.core import serializers
from apples.models import Apple
from oranges.models import Orange

published_fruits =  Apple.objects.select_related('Orange').filter(state='published').defer(
                               # Fields I don't want:
                               'field1',
                               'field2',
                               'field3'
                               )

So, I have the following results:
[
  {
    "model": "apples.apple",
    "pk": "5326t236-8415-48f4-89e5-1789vc9of442",
    "fields": {
      "id": "apple-type1",
      "name": "Brazil",
      ".....": "....",
      "exports ": []
    }
  },
  { ... }
  {
    "model": "apples.apple",
    "pk": "6435673472-fret2-523t-523t-d41159t23432213",
    "fields": {
      "id": "apple-type2",
      "name": "India",
            ".....": "....",
      "exports ": []
    }
  }
]
```


My proble is :
1. The fields who I don't want (exclude), finally I got it.
2. I want to directly pass all this response to a JSON http output for the users and I have it with the following way:
```
json_response = serializers.serialize('json', published_fruits)
return HttpResponse(json_response, content_type='application/json')
```
I get all the respone in JSON, but ( as you can see above ) with the following stracture:
```
  {
    "model": "apples.apple",
    "pk": "6435673472-fret2-523t-523t-d41159t23432213",
    "fields": {
      "id": "apple-type2",
      "name": "India",
            ".....": "....",
      "exports ": []
    }
  }
```

Please, could you help me to avoid the following part from each record  :
```
    "model": "apples.apple",
    "pk": "6435673472-fret2-523t-523t-d41159t23432213",
    "fields": {
```
from the JSON ?

Thank you very much in advance!

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/MvvGE0gJ6x5v1Geo7zgnHdB8TLr79HKJwubqhQzrOKUSB3Q4oHPeWCctdFmOAJ74PbqQ9gHkg44hKVrPqp9BFiZ7Bn7E-LzM30aNrbhcf7s%3D%40protonmail.com.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAE5VhgX04DNGPHS%2BgpC7UdT2Kwj40%2BZ6UqKckSQ0G8RL5mHb0A%40mail.gmail.com.

No comments:

Post a Comment