On 9 touko, 19:28, Gavin Wahl <gavinw...@gmail.com> wrote: > I'd like to have a go at fixing this bug, but I'm not sure where to start. > The problem seems to be that there's only a single instance of the field > per model, so field.model is always the abstract class. I can't see a way > to access the concrete class from the field instance. If the field only has > a reference to the abstract model, which doesn't have a pk, how can it > calculate join columns for the concrete model?
It can't. The field's model should be the concrete model, but due to buggy field setup it isn't. I took a look at altering the way virtual fields are copied from abstract model to concrete model, but didn't find any easy solution there. I didn't use too much time investigating this path, so taking one more look might yield something. Start from django.db.models.base:ModelBase.__new__() and virtual_fields copying. Try to somehow end up in a situation where the field's model is the concrete model. More likely the solution is going to be found by altering how GenericRelations are seen by the ORM. Before #19385 GenericRelation masqueraded as m2m field (which it isn't), now in master it is a ForeignObject subclass. The basic problem is that generic relation represents reverse join, while ForeignObject usually represents direct join. Doing changes in this area is likely going to be somewhat complex... - Anssi -- You received this message because you are subscribed to the Google Groups "Django developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at http://groups.google.com/group/django-developers?hl=en. For more options, visit https://groups.google.com/groups/opt_out.