#31269: Generic Relations on multi table inheritance does not behave as other
fields
-----------------------------------------+------------------------
               Reporter:  Eduardo Klein  |          Owner:  nobody
                   Type:  Uncategorized  |         Status:  new
              Component:  Uncategorized  |        Version:  3.0
               Severity:  Normal         |       Keywords:
           Triage Stage:  Unreviewed     |      Has patch:  0
    Needs documentation:  0              |    Needs tests:  0
Patch needs improvement:  0              |  Easy pickings:  0
                  UI/UX:  0              |
-----------------------------------------+------------------------
 Suppose we have the following models:

 {{{
 #!python
 class Tag(models.Model):
     content_type = models.ForeignKey('contenttypes.ContentType',
 on_delete=models.CASCADE)
     object_id = models.PositiveIntegerField()
     obj = GenericForeignKey()


 class Point(models.Model):
     name = models.CharField(max_length=256)
     tags = GenericRelation("tag")


 class SpecificPoint(Point):
     pass
 }}}

 We create a specific_point instance as follow:
 {{{
 #!python
 specific_point = SpecificPoint.objects.create(name="test")
 }}}

 Now we add a tag to the corresponding point instance :
 {{{
 #!python
 point = Point.objects.get(pk=specific_point.id)
 tag = point.tags.create()
 }}}

 When we do `specific_point.tags.all()` it returns en empty queryset,
 instead of a queryset containing the tag instance that we have created and
 that we would obtain doing `point.tags.all()`

 I understand that the issue here is that the content_type associated with
 the `tag` instance is the "point" one and not the "specificpoint", but
 it's problematic since if we do `specific_point.pk` or
 `specific_point.name` or any other field that is not a generic relation,
 we would obtain exactly the same as `point.pk` or `point.name`, but the
 "logic" is broken for generic relations.

 I'm not sure that this is a bug, but at least I think it deserves some
 consideration in the docs. If this is considered a bug, one possible
 solution would be to concatenate the tags from both models' content_types.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31269>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/052.5a505835d8e3cfe79ad2eb3bd9862c26%40djangoproject.com.

Reply via email to