Inconsistent behaviour in querying and creating objects
|Reported by:||DmitryRisenberg||Owned by:||nobody|
|Component:||Database layer (models, ORM)||Version:||1.1|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
I have a strange behaviour for the following models:
from django.db import models class Channel(models.Model): def createSubscription(self): subscription = Subscription.objects.create(channel = self) print Subscription.objects.filter(channel = self) return subscription class FeedChannel(Channel): link = models.CharField(max_length = 200, primary_key = True) class Subscription(models.Model): channel = models.ForeignKey(Channel)
This is what I get when I run ./manage.py shell with a newly created DB:
>>> from smth import models >>> c = models.FeedChannel.objects.create() >>> s = c.createSubscription()  >>> print s.channel.id, c.channel_ptr.id 1 1 >>> >>>
The filter query in createSubscription does not include the created object. I either expect the filter query to select the newly created Subscription object, because its channel field points to the correct Channel instance, or the create query to fail when it encounters an object of derived type instead of base.
Without the primary_key constraint on link field everything works just as expected.
I am using Django 1.1 and Python 2.5.
Change History (5)
comment:1 Changed 7 years ago by russellm
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
- Triage Stage changed from Unreviewed to Accepted