I've been looking into how generic relations work because I wanted an
easier way to use them in the admin interface. I've written some
javascript and a little bit of python to make generic relationships
quite usable now.
However, one thing that I noticed was that in order for my code to work
properly, the model of interest must have 2 fields; 'content_type' and
'object_id'. But then I started to think that requiring a field to
have a certain name, without the ability to manually specify which
field is the 'object_id' and which is the 'content_type', was perhaps
something that has overlooked?
For example, consider (from the docs):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = models.GenericForeignKey()
behind the scenes Django automatically does the following:
class GenericForeignKey(object):
...
def __init__(self, ct_field="content_type", fk_field="object_id"):
...
It seems like it should work like this:
a = models.ForeignKey(ContentType)
b = models.PositiveIntegerField()
content_object = models.GenericForeignKey(ct_field='a', fk_field='b')
and then, for example,
class GenericForeignKey(object):
...
def __init__(self, ct_field, fk_field):
self.ct_field = ct_field or "content_type"
self.fk_field = fk_field or "object_id"
...
I'd be willing to do more work on what I've written to make using
generic relationships within the admin if interested.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Django
developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---