Opened 6 years ago

Closed 6 years ago

Last modified 4 years ago

#10738 closed (fixed)

ContentType and model instances with deferred fields

Reported by: tomasz.elendt Owned by: nobody
Component: Database layer (models, ORM) Version: 1.1-beta
Severity: Keywords:
Cc: Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description

Suppose we have model like this:

class Entry(models.Model):
    title = models.CharField(max_length=128)
    body = models.TextField()
>>> from blog.models import Entry
>>> # creating new entry object
>>> Entry.objects.create(title="test entry", body="some body content")
>>> entry_1 = Entry.objects.get(title="test entry")
>>> entry_2 = Entry.objects.defer('body').get(title="test entry")
>>> from django.contrib.contenttypes.models import ContentType
>>> ContentType.objects.get_for_model(e1)
<ContentType: entry>
>>> ContentType.objects.get_for_model(e2)
<ContentType: entry_ deferred_body>

ContentTypes for the same model instances with and without deferred fields are not the same (I suppose that's because they're not instances of the same class and have different _meta.object.name value). I'm not sure if that's the correct behavior. I mean - does the instance with deferred field(s) should have different ContentType?

I found this issue when i tried use django-tagging and it's template tag tags_for_object with 'deferred QuerySet'. But maybe described behavior is correct and that's django-tagging bug?

Attachments (3)

deferred_model_contenttype.diff (1.2 KB) - added by tomasz.elendt 6 years ago.
deferred_model_contenttype.2.diff (571 bytes) - added by tomasz.elendt 6 years ago.
deferred_model_contenttype_tests.diff (611 bytes) - added by tomasz.elendt 6 years ago.

Download all attachments as: .zip

Change History (8)

comment:1 Changed 6 years ago by anonymous

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Version changed from 1.0 to 1.1-beta-1

Changed 6 years ago by tomasz.elendt

comment:2 Changed 6 years ago by tomasz.elendt

  • Has patch set
  • Needs tests set

Changed 6 years ago by tomasz.elendt

Changed 6 years ago by tomasz.elendt

comment:3 Changed 6 years ago by tomasz.elendt

  • Needs tests unset

comment:4 Changed 6 years ago by mtredinnick

  • Resolution set to fixed
  • Status changed from new to closed

Fixed in r10523.

comment:5 Changed 4 years ago by jacob

  • milestone 1.1 deleted

Milestone 1.1 deleted

Note: See TracTickets for help on using tickets.
Back to Top