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 relationship
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"
   ...


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Django 
developers" group.
To post to this group, send email to django-developers@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to