Opened 17 years ago
Closed 17 years ago
#7403 closed (invalid)
dumpdata do not play friendly with inheritance
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | Core (Serialization) | Version: | dev |
| Severity: | Keywords: | ||
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Let say I have the following classes:
class Person(models.Model):
first_name = models.CharField(max_length = 50)
last_name = models.CharField(max_length = 50)
def full_name(self):
return "%s %s" % (self.first_name, self.last_name)
class Pirate(Person):
pastafarian = models.BooleanField(default = True)
Now I create a Pirate:
>>> p = Pirate() >>> p.first_name = "Jack" >>> p.last_name = "Sparrow" >>> p.pastafarian = False >>> p.save() >>> p <Pirate: Jack Sparrow> >>> Person.objects.all() [<Person: Jack Sparrow>] >>> Pirate.objects.all() [<Pirate: Jack Sparrow>]
So far so good. Lets get to the buggy part:
$ ./manage.py dumpdata > yarrrr.json $ ./manage.py reset pirates $ ./manage.py loaddata yarrrr.json $ ./manage.py shell >>> from myproject.pirates.models import * >>> Person.objects.all() [<Person: Jack Sparrow>, <Person: Jack Sparrow>]
A workaround for now is to manually edit the serialized file and remove all references to the base class (Person in this case). Import will then work as expected.
Note:
See TracTickets
for help on using tickets.
You don't give an SVN revision that you were using, but the behavior you are reporting is consistent with pre-[7600], when this bug was fixed. If you are still seeing this behaviour with [7600] or newer, please reopen.