Opened 14 years ago
Closed 10 years ago
#16127 closed Bug (worksforme)
Queryset which uses defer() method not serialize
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Core (Serialization) | Version: | 1.3 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Hello!
I have this function using json and a queryset with defer() method, but the fields not target in queryset, i need only "id" and "nome":
models.py
class Pessoa(models.Model): nome = models.CharField(max_length=50) data_nascimento = models.DateField() data_inclusao = models.DateField() cpf = models.CharField(max_length=14) telefone = models.CharField(max_length=13) celular = models.CharField(max_length=13) class Meta: abstract = True class Proprietario(Pessoa): endereco = models.ForeignKey(Endereco) def __unicode__(self): return "%s, %s" % (self.nome, self.cpf)
views.py:
def load_proprietarios(request): data = serializers.serialize('json',Proprietario.objects.defer('cpf','telefone','celular','data_nascimento','data_inclusao',),ensure_ascii=False)) return HttpResponse(data, mimetype="application/javascript")
This is the output:
[{"pk": 1, "model": "proprietario.proprietario_deferred_celular_cpf_telefone_data_inclusao_data_nascimento", "fields": {}}]
Note that the "id" and the "nome" fields (class Proprietario / class abstract Pessoa) does not appear after defer() method.
Regards.
Change History (6)
comment:1 by , 14 years ago
Component: | Database layer (models, ORM) → Core (Serialization) |
---|---|
Description: | modified (diff) |
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 14 years ago
UI/UX: | unset |
---|
comment:3 by , 14 years ago
A test for this issue can be found at https://github.com/knutz3n/django/commit/3339f94a8bb4162f9ea650a935917f004726a9a8.
comment:4 by , 14 years ago
Summary: | Queryset which uses defer() method not serialize in Json → Queryset which uses defer() method not serialize |
---|
The bug seems to apply to all serializers, not only JSON.
comment:5 by , 10 years ago
I tested this on the current master branch and this no longer seems to be a problem.
comment:6 by , 10 years ago
Resolution: | → worksforme |
---|---|
Status: | new → closed |
This bug report should be simplified with a simpler model and view as given below.
models.py:
view.py:
Output:
Specifying fields to the serializer like below, gives the same result.
The same issue also applies when using .only().
I would argue that when fields are not specified to the serializer, the entire object should be loaded and serialized.