Opened 17 years ago
Closed 17 years ago
#10628 closed (invalid)
RelatedManager and NULL
| Reported by: | anonymous | Owned by: | nobody |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | 1.1-beta |
| 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
My Model:
class Active(models.Model): post = models.ForeignKey(Post, related_name='activeposts') rubrica = models.ForeignKey(Rubrica, related_name='activeposts', null=True, blank=True) type = models.ForeignKey(Type, related_name='activeposts', null=True, blank=True)
Code:
>>> p = Post.objects.get(pk=1206535731) >>> p.activeposts.filter(type__pk=2, rubrica__isnull=True)
return empty result. but a have data in database.
>>> p.activeposts.filter(type__exact=2, rubrica__isnull=True).query.as_sql()
('SELECT `doska_active`.`id`, `doska_active`.`post_id`, `doska_active`.`rubrica_id`, `doska_active`.`type_id` FROM `doska_active` LEFT OUTER JOIN `doska_rubrica` ON (`doska_active`.`rubrica_id` = `doska_rubrica`.`id`) WHERE (`doska_active`.`post_id` = %s AND `doska_active`.`type_id` = %s AND `doska_rubrica`.`id` IS NULL)', (1206535731, 2))
Problem in AND doska_rubrica.id IS NULL
Change History (4)
comment:1 by , 17 years ago
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
comment:2 by , 17 years ago
I need:
AND doska_active.type_id = %s AND doska_active.rubrica_id IS NULL
comment:3 by , 17 years ago
| Resolution: | invalid |
|---|---|
| Status: | closed → reopened |
comment:4 by , 17 years ago
| Resolution: | → invalid |
|---|---|
| Status: | reopened → closed |
Please ask support questions on the django-users mailing list. The SQL output you are getting for the filter you have given is not incorrect. There is no bug here.
Note:
See TracTickets
for help on using tickets.
Your filter is asking for things where
rubrica__isnull=True, which is why that comparison to NULL is in the query. That's the correct SQL for that filter.