On Mon, Nov 23, 2009 at 9:12 PM, Rahul <rahul.priyadar...@in.ibm.com> wrote: > Hi All, > > There is a problem reported for history view in admin page. > For history view there is a sql query generated, which trying to do > exact look-up on OBJECT_ID column (LogEntry model, DJANGO_ADMIN_LOG > table). > > "TextField" is responsible for handling large text and in DB2 > "TextField" is mapped to CLOB. > DB2 doesn't support exact look-up with CLOB datatype. > > When I checked the values for this OBJECT_ID column in the database, > it only contains integer (1, 2, 3, etc.). > > Now the question arises: Why "OBJECT_ID" defined as "TextField" type? > In most of the cases "XXX_ID" field is expected to be INTEGER. > > Is there any specific reason why "OBJECT_ID" defined as "TextField" in > LogEntry model in "django\contrib\admin\models.py".
Yes. The reason is that while *most* objects will use an integer as the primary key, not *all* objects use an integer as a primary key. A TextField is the most generic storage that can be provided to store *any* kind of primary key - integer, char, or otherwise. What is stored in this field is a string-serialized representation of the primary key value. LogEntry.get_edited_object then issues the query to find the actual object that is associated with the id; this relies on the fact that Django queries will coerce string input into an appropriate data type for a primary key lookup. Yours Russ Magee %-) -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=.