home / django_tickets / tickets

tickets: 8339

This data as json

id created changetime last_pulled_from_trac stage status component type severity version resolution summary description owner reporter keywords easy has_patch needs_better_patch needs_tests needs_docs ui_ux
8339 2008-08-15 09:33:37 2008-08-15 14:24:48 2022-03-06 03:41:59.420076 Unreviewed closed contrib.admin     dev invalid Problem with behaviour of ManyToManyField I have a problem using the ManyToManyFied with an already existing database. I have two tables called AVAILABILITY and TESTDEF that are linked together according to a n-n relationship. I have defined them as following in my models.py file (with the help of inspectdb). The names of the columns in the tables are the same as the python names. {{{ class Testdef(models.Model): testid = models.DecimalField(max_digits=38, decimal_places=0, primary_key=True) testname = models.CharField(max_length=100) testtitle = models.CharField(max_length=255, blank=True) testabbr = models.CharField(max_length=50, blank=True) def __unicode__(self): return self.testname+' ('+self.testabbr+')' class Meta: db_table = u'TESTDEF' class Availability(models.Model): availabilityid = models.AutoField("Id", primary_key=True, null=False) availabilityname = models.CharField("Name", max_length=255) bdiiflag = models.CharField("BDii", max_length=1, choices=(('Y', "Yes"),('N', "No"),)) void = models.ForeignKey(Vo, db_column='void') tests = models.ManyToManyField(Testdef, db_table='AVAILABILITYTESTCRITICALITY', related_name='availabilityid') def __unicode__(self): return self.availabilityname class Meta: db_table = u'AVAILABILITY' verbose_name_plural = u'Availabilities' }}} The linking table is called AVAILABILITYTESTCRITICALITY, and has the following fields: AVAILABILITYID, TESTID I use this environment: {{{ Environment: Request Method: GET Request URL: http://localhost:8000/admin/avl/availability/6/ Django Version: 1.0-alpha_2-SVN-unknown Python Version: 2.3.4 Installed Applications: ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'django.contrib.databrowse', 'mysite.avl'] Installed Middleware: ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.doc.XViewMiddleware') }}} The code as given above, doesn't work, and I get this error when trying to access an AVAILABILITY item from the admin application: {{{ Traceback: File "/usr/lib/python2.3/site-packages/django/core/handlers/base.py" in get_response 86. response = callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python2.3/site-packages/django/contrib/admin/sites.py" in root 172. return self.model_page(request, *url.split('/', 2)) File "/usr/lib/python2.3/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 44. response = view_func(request, *args, **kwargs) File "/usr/lib/python2.3/site-packages/django/contrib/admin/sites.py" in model_page 189. return admin_obj(request, rest_of_url) File "/usr/lib/python2.3/site-packages/django/contrib/admin/options.py" in __call__ 275. return self.change_view(request, unquote(url)) File "/usr/lib/python2.3/site-packages/django/db/transaction.py" in _commit_on_success 198. res = func(*args, **kw) File "/usr/lib/python2.3/site-packages/django/contrib/admin/options.py" in change_view 657. form = ModelForm(instance=obj) File "/usr/lib/python2.3/site-packages/django/forms/models.py" in __init__ 197. object_data = model_to_dict(instance, opts.fields, opts.exclude) File "/usr/lib/python2.3/site-packages/django/forms/models.py" in model_to_dict 117. data[f.name] = [obj.pk for obj in f.value_from_object(instance)] File "/usr/lib/python2.3/site-packages/django/db/models/query.py" in _result_iter 176. self._fill_cache() File "/usr/lib/python2.3/site-packages/django/db/models/query.py" in _fill_cache 604. self._result_cache.append(self._iter.next()) File "/usr/lib/python2.3/site-packages/django/db/models/query.py" in iterator 266. for row in self.query.results_iter(): File "/usr/lib/python2.3/site-packages/django/db/models/sql/query.py" in results_iter 200. for rows in self.execute_sql(MULTI): File "/usr/lib/python2.3/site-packages/django/db/models/sql/query.py" in execute_sql 1614. cursor.execute(sql, params) File "/usr/lib/python2.3/site-packages/django/db/backends/util.py" in execute 19. return self.cursor.execute(sql, params) File "/usr/lib/python2.3/site-packages/django/db/backends/oracle/base.py" in execute 343. return Database.Cursor.execute(self, query, self._param_generator(params)) Exception Type: DatabaseError at /admin/avl/availability/6/ Exception Value: ORA-00904: "AVAILABILITYTESTCRITICALITY"."TESTDEF_ID": invalid identifier }}} After renaming the TESTID field in my linking table as TESTDEF_ID, I get this other error, as if django had completely forgotten about the primary keys I have defined before (it seems that the field it tries to access is the default name of the primary key). {{{ Traceback: File "/usr/lib/python2.3/site-packages/django/core/handlers/base.py" in get_response 86. response = callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python2.3/site-packages/django/contrib/admin/sites.py" in root 172. return self.model_page(request, *url.split('/', 2)) File "/usr/lib/python2.3/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 44. response = view_func(request, *args, **kwargs) File "/usr/lib/python2.3/site-packages/django/contrib/admin/sites.py" in model_page 189. return admin_obj(request, rest_of_url) File "/usr/lib/python2.3/site-packages/django/contrib/admin/options.py" in __call__ 275. return self.change_view(request, unquote(url)) File "/usr/lib/python2.3/site-packages/django/db/transaction.py" in _commit_on_success 198. res = func(*args, **kw) File "/usr/lib/python2.3/site-packages/django/contrib/admin/options.py" in change_view 657. form = ModelForm(instance=obj) File "/usr/lib/python2.3/site-packages/django/forms/models.py" in __init__ 197. object_data = model_to_dict(instance, opts.fields, opts.exclude) File "/usr/lib/python2.3/site-packages/django/forms/models.py" in model_to_dict 117. data[f.name] = [obj.pk for obj in f.value_from_object(instance)] File "/usr/lib/python2.3/site-packages/django/db/models/query.py" in _result_iter 176. self._fill_cache() File "/usr/lib/python2.3/site-packages/django/db/models/query.py" in _fill_cache 604. self._result_cache.append(self._iter.next()) File "/usr/lib/python2.3/site-packages/django/db/models/query.py" in iterator 266. for row in self.query.results_iter(): File "/usr/lib/python2.3/site-packages/django/db/models/sql/query.py" in results_iter 200. for rows in self.execute_sql(MULTI): File "/usr/lib/python2.3/site-packages/django/db/models/sql/query.py" in execute_sql 1614. cursor.execute(sql, params) File "/usr/lib/python2.3/site-packages/django/db/backends/util.py" in execute 19. return self.cursor.execute(sql, params) File "/usr/lib/python2.3/site-packages/django/db/backends/oracle/base.py" in execute 343. return Database.Cursor.execute(self, query, self._param_generator(params)) Exception Type: DatabaseError at /admin/avl/availability/6/ Exception Value: ORA-00904: "AVAILABILITYTESTCRITICALITY"."TESTDEF_ID": invalid identifier }}} Is it just me (maybe I have missed an option in the definition of the ManyToManyField), or is it a real bug? nobody guneeyoufix   0 0 0 0 0 0
Powered by Datasette · Queries took 1.147ms