I have 2 classes:
# -------------------- # SquadSelector Class # -------------------- class SquadSelector(models.Model): fixture = models.ForeignKey(Fixture, verbose_name="Fixture", core=True, help_text="Fixture to select squad for.") gk = models.ForeignKey(Player, verbose_name="Goal Keeper", related_name="gk", core=True, help_text="Name of Goal Keeper.") rb = models.ForeignKey(Player, verbose_name="Right Back", related_name="rb", core=True, help_text="Name of Right Back.") cb1 = models.ForeignKey(Player, verbose_name="Centre Back", related_name="cb1", core=True, help_text="Name of First Centre Back.") cb2 = models.ForeignKey(Player, verbose_name="Centre Back", related_name="cb2", core=True, help_text="Name of Second Centre Back.") lb = models.ForeignKey(Player, verbose_name="Left Back", related_name="lb", core=True, help_text="Name of Left Back.") rw = models.ForeignKey(Player, verbose_name="Right Wing", related_name="rw", core=True, help_text="Name of Right Winger.") cm1 = models.ForeignKey(Player, verbose_name="Centre Midfield", related_name="cm1", core=True, help_text="Name of First Centre Midfielder.") cm2 = models.ForeignKey(Player, verbose_name="Centre Midfield", related_name="cm2", core=True, help_text="Name of Second Centre Midfielder.") lw = models.ForeignKey(Player, verbose_name="Left Wing", related_name="lw", core=True, help_text="Name of Left Winger.") cf1 = models.ForeignKey(Player, verbose_name="Centre Forward", related_name="cf1", core=True, help_text="Name of First Centre Forward.") cf2 = models.ForeignKey(Player, verbose_name="Centre Forward", related_name="cf2", core=True, help_text="Name of Second Centre Forward.") sub1 = models.ForeignKey(Player, verbose_name="Sub 1", related_name="sub1", blank=True, null=True, help_text="Name of 1st Sub.") sub2 = models.ForeignKey(Player, verbose_name="Sub 2", related_name="sub2", blank=True, null=True, help_text="Name of 2nd Sub.") sub3 = models.ForeignKey(Player, verbose_name="Sub 3", related_name="sub3", blank=True, null=True, help_text="Name of 3rd Sub.") sub4 = models.ForeignKey(Player, verbose_name="Sub 4", related_name="sub4", blank=True, null=True, help_text="Name of 4th Sub.") sub5 = models.ForeignKey(Player, verbose_name="Sub 5", related_name="sub5", blank=True, null=True, help_text="Name of 5th Sub.") class Admin: pass list_display = ('fixture', ) list_filter = ['fixture',] search_fields = ['fixture'] # -------- # Accessor # -------- #String method def __str__ (self): return str(self.gk) def save(self): # Instead of iterarting manually through all the players, # we use self.__dict__ and remove the stuff we don't need. squad = self.__dict__.copy() try: squad.pop('_fixture_cache') except KeyError: pass try: squad.pop('fixture_id') except KeyError: pass for player_id in squad.values(): if player_id is not None: appearance = Appearance() appearance.player_id = player_id appearance.result = self.fixture.result appearance.save() # ---------------- # Appearance Class # ---------------- class Appearance(models.Model): player = models.ForeignKey(Player, verbose_name="Player", core=True, help_text="Name of player.") result = models.ForeignKey(Result, verbose_name="Result", edit_inline=models.TABULAR, num_in_admin=15, num_extra_on_change=3, core=True, help_text="Result they played in.") class Admin: pass list_display = ('result', 'player',) list_filter = ['result', 'player',] search_fields = ['player'] # -------- # Accessor # -------- #String method def __str__ (self): return str(self.result) def count(self,fieldname="*"): return self.get_query_set().countAppearance(player) #Counts number of goals a player has scored - this is a patch as support for it is still in development def countAppearance(self,fieldsname="*"): counter = self.clone counter._order_by = () counter._offset = None counter._limit = None counter._select_related = False select, sql, params = counter._get_sql_clause() if fieldname == '*': column = '*' else: column = self.model._meta.get_field(fieldname).column cursor = connection.cursor() cursor.execute("SELECT COUNT(*)" + sql, params) cursor.execute("SELECT COUNT(%s)" % (column) + sql, params) return cursor.fetchone()[0] When I add a "squad selector" I get the following error: DoesNotExist at /admin/teams/squadselector/add/ Result matching query does not exist. Request Method: POST Request URL: http://duncanm.webfactional.com/admin/teams/squadselector/add/ Exception Type: DoesNotExist Exception Value: Result matching query does not exist. Exception Location: /home2/duncanm/lib/python2.4/django/db/models/ query.py in get, line 213 Traceback (innermost last) Switch back to interactive view * /home2/duncanm/lib/python2.4/django/core/handlers/base.py in get_response 67. # Apply view middleware 68. for middleware_method in self._view_middleware: 69. response = middleware_method(request, callback, callback_args, callback_kwargs) 70. if response: 71. return response 72. 73. try: 74. response = callback(request, *callback_args, **callback_kwargs) ... 75. except Exception, e: 76. # If the view raised an exception, run it through exception 77. # middleware, and if the exception middleware returns a 78. # response, use that. Otherwise, reraise the exception. 79. for middleware_method in self._exception_middleware: 80. response = middleware_method(request, e) ▶ Local vars Variable Value callback <function _checklogin at 0xb7a1dbc4> callback_args ('teams', 'squadselector') callback_kwargs {} e <django.db.models.base.DoesNotExist instance at 0xb79a594c> exceptions <module 'django.core.exceptions' from '/home2/duncanm/lib/ python2.4/django/core/exceptions.pyc'> mail_admins <function mail_admins at 0xb7c3de2c> middleware_method <bound method XViewMiddleware.process_view of <django.middleware.doc.XViewMiddleware object at 0xb7cb854c>> path '/admin/teams/squadselector/add/' request <ModPythonRequest path:/admin/teams/squadselector/add/, GET:<MultiValueDict: {}>, POST:<MultiValueDict: {'sub4': [''], 'rw': ['6'], 'lb': ['5'], 'sub3': [''], 'sub1': ['12'], 'cf2': ['11'], 'fixture': ['16'], 'cb2': ['4'], 'lw': ['9'], 'cb1': ['3'], 'rb': ['2'], 'sub2': ['13'], 'sub5': [''], 'gk': ['1'], 'cm2': ['8'], 'cm1': ['7'], 'cf1': ['10']}>, COOKIES:{'dbx-pagemeta': 'grabit=0-,1-,2+,3-, 4+,5+&advancedstuff=0-', 'dbx-postmeta': 'grabit=0+,1+,2+,3+,4+, 5+&advancedstuff=0-', 'sessionid': '1fe6ff002f8fb560c332511c8159e2b4'}, META:{'AUTH_TYPE': None, 'CONTENT_LENGTH': 0L, 'CONTENT_TYPE': None, 'GATEWAY_INTERFACE': 'CGI/ 1.1', 'HTTP_ACCEPT': 'text/xml,application/xml,application/xhtml +xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'HTTP_ACCEPT_ENCODING': 'gzip,deflate', 'HTTP_ACCEPT_LANGUAGE': 'en- gb,en;q=0.5', 'HTTP_CONTENT_LENGTH': '107', 'HTTP_CONTENT_TYPE': 'application/x-www-form-urlencoded', 'HTTP_COOKIE': 'dbx- postmeta=grabit=0+,1+,2+,3+,4+,5+&advancedstuff=0-; sessionid=1fe6ff002f8fb560c332511c8159e2b4; dbx-pagemeta=grabit=0-,1-, 2+,3-,4+,5+&advancedstuff=0-', 'HTTP_HOST': 'duncanm.webfactional.com', 'HTTP_MAX_FORWARDS': '10', 'HTTP_REFERER': 'http://duncanm.webfactional.com/admin/teams/squadselector/add/', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv: 1.8.1.2) Gecko/20070219 Firefox/2.0.0.2', 'HTTP_X_FORWARDED_FOR': '81.105.97.255', 'HTTP_X_FORWARDED_HOST': 'duncanm.webfactional.com', 'HTTP_X_FORWARDED_SERVER': 'duncanm.webfactional.com', 'PATH_INFO': '/ admin/teams/squadselector/add/', 'PATH_TRANSLATED': None, 'QUERY_STRING': None, 'REMOTE_ADDR': '127.0.0.1', 'REMOTE_HOST': None, 'REMOTE_IDENT': None, 'REMOTE_USER': None, 'REQUEST_METHOD': 'POST', 'SCRIPT_NAME': None, 'SERVER_NAME': 'web3.webfaction.com', 'SERVER_PORT': 0, 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'mod_python'}> resolver <django.core.urlresolvers.RegexURLResolver object at 0xb7cb860c> response None self <django.core.handlers.modpython.ModPythonHandler object at 0xb7a2d5ac> settings <django.conf.LazySettings object at 0xb7c8dccc> urlresolvers <module 'django.core.urlresolvers' from '/home2/duncanm/lib/ python2.4/django/core/urlresolvers.pyc'> * /home2/duncanm/lib/python2.4/django/contrib/admin/views/ decorators.py in _checklogin 48. def _checklogin(request, *args, **kwargs): 49. if request.user.is_authenticated() and request.user.is_staff: 50. # The user is valid. Continue to the admin page. 51. if request.POST.has_key('post_data'): 52. # User must have re-authenticated through a different window 53. # or tab. 54. request.POST = _decode_post_data(request.POST['post_data']) 55. return view_func(request, *args, **kwargs) ... 56. 57. assert hasattr(request, 'session'), "The Django admin requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'." 58. 59. # If this isn't already the login page, display it. 60. if not request.POST.has_key(LOGIN_FORM_KEY): 61. if request.POST: ▶ Local vars Variable Value args ('teams', 'squadselector') kwargs {} request <ModPythonRequest path:/admin/teams/squadselector/add/, GET:<MultiValueDict: {}>, POST:<MultiValueDict: {'sub4': [''], 'rw': ['6'], 'lb': ['5'], 'sub3': [''], 'sub1': ['12'], 'cf2': ['11'], 'fixture': ['16'], 'cb2': ['4'], 'lw': ['9'], 'cb1': ['3'], 'rb': ['2'], 'sub2': ['13'], 'sub5': [''], 'gk': ['1'], 'cm2': ['8'], 'cm1': ['7'], 'cf1': ['10']}>, COOKIES:{'dbx-pagemeta': 'grabit=0-,1-,2+,3-, 4+,5+&advancedstuff=0-', 'dbx-postmeta': 'grabit=0+,1+,2+,3+,4+, 5+&advancedstuff=0-', 'sessionid': '1fe6ff002f8fb560c332511c8159e2b4'}, META:{'AUTH_TYPE': None, 'CONTENT_LENGTH': 0L, 'CONTENT_TYPE': None, 'GATEWAY_INTERFACE': 'CGI/ 1.1', 'HTTP_ACCEPT': 'text/xml,application/xml,application/xhtml +xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'HTTP_ACCEPT_ENCODING': 'gzip,deflate', 'HTTP_ACCEPT_LANGUAGE': 'en- gb,en;q=0.5', 'HTTP_CONTENT_LENGTH': '107', 'HTTP_CONTENT_TYPE': 'application/x-www-form-urlencoded', 'HTTP_COOKIE': 'dbx- postmeta=grabit=0+,1+,2+,3+,4+,5+&advancedstuff=0-; sessionid=1fe6ff002f8fb560c332511c8159e2b4; dbx-pagemeta=grabit=0-,1-, 2+,3-,4+,5+&advancedstuff=0-', 'HTTP_HOST': 'duncanm.webfactional.com', 'HTTP_MAX_FORWARDS': '10', 'HTTP_REFERER': 'http://duncanm.webfactional.com/admin/teams/squadselector/add/', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv: 1.8.1.2) Gecko/20070219 Firefox/2.0.0.2', 'HTTP_X_FORWARDED_FOR': '81.105.97.255', 'HTTP_X_FORWARDED_HOST': 'duncanm.webfactional.com', 'HTTP_X_FORWARDED_SERVER': 'duncanm.webfactional.com', 'PATH_INFO': '/ admin/teams/squadselector/add/', 'PATH_TRANSLATED': None, 'QUERY_STRING': None, 'REMOTE_ADDR': '127.0.0.1', 'REMOTE_HOST': None, 'REMOTE_IDENT': None, 'REMOTE_USER': None, 'REQUEST_METHOD': 'POST', 'SCRIPT_NAME': None, 'SERVER_NAME': 'web3.webfaction.com', 'SERVER_PORT': 0, 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'mod_python'}> view_func <function _wrapped_view_func at 0xb7a1db8c> * /home2/duncanm/lib/python2.4/django/views/decorators/cache.py in _wrapped_view_func 32. 33. def never_cache(view_func): 34. """ 35. Decorator that adds headers to a response so that it will 36. never be cached. 37. """ 38. def _wrapped_view_func(request, *args, **kwargs): 39. response = view_func(request, *args, **kwargs) ... 40. add_never_cache_headers(response) 41. return response 42. return _wrapped_view_func ▶ Local vars Variable Value args ('teams', 'squadselector') kwargs {} request <ModPythonRequest path:/admin/teams/squadselector/add/, GET:<MultiValueDict: {}>, POST:<MultiValueDict: {'sub4': [''], 'rw': ['6'], 'lb': ['5'], 'sub3': [''], 'sub1': ['12'], 'cf2': ['11'], 'fixture': ['16'], 'cb2': ['4'], 'lw': ['9'], 'cb1': ['3'], 'rb': ['2'], 'sub2': ['13'], 'sub5': [''], 'gk': ['1'], 'cm2': ['8'], 'cm1': ['7'], 'cf1': ['10']}>, COOKIES:{'dbx-pagemeta': 'grabit=0-,1-,2+,3-, 4+,5+&advancedstuff=0-', 'dbx-postmeta': 'grabit=0+,1+,2+,3+,4+, 5+&advancedstuff=0-', 'sessionid': '1fe6ff002f8fb560c332511c8159e2b4'}, META:{'AUTH_TYPE': None, 'CONTENT_LENGTH': 0L, 'CONTENT_TYPE': None, 'GATEWAY_INTERFACE': 'CGI/ 1.1', 'HTTP_ACCEPT': 'text/xml,application/xml,application/xhtml +xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'HTTP_ACCEPT_ENCODING': 'gzip,deflate', 'HTTP_ACCEPT_LANGUAGE': 'en- gb,en;q=0.5', 'HTTP_CONTENT_LENGTH': '107', 'HTTP_CONTENT_TYPE': 'application/x-www-form-urlencoded', 'HTTP_COOKIE': 'dbx- postmeta=grabit=0+,1+,2+,3+,4+,5+&advancedstuff=0-; sessionid=1fe6ff002f8fb560c332511c8159e2b4; dbx-pagemeta=grabit=0-,1-, 2+,3-,4+,5+&advancedstuff=0-', 'HTTP_HOST': 'duncanm.webfactional.com', 'HTTP_MAX_FORWARDS': '10', 'HTTP_REFERER': 'http://duncanm.webfactional.com/admin/teams/squadselector/add/', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv: 1.8.1.2) Gecko/20070219 Firefox/2.0.0.2', 'HTTP_X_FORWARDED_FOR': '81.105.97.255', 'HTTP_X_FORWARDED_HOST': 'duncanm.webfactional.com', 'HTTP_X_FORWARDED_SERVER': 'duncanm.webfactional.com', 'PATH_INFO': '/ admin/teams/squadselector/add/', 'PATH_TRANSLATED': None, 'QUERY_STRING': None, 'REMOTE_ADDR': '127.0.0.1', 'REMOTE_HOST': None, 'REMOTE_IDENT': None, 'REMOTE_USER': None, 'REQUEST_METHOD': 'POST', 'SCRIPT_NAME': None, 'SERVER_NAME': 'web3.webfaction.com', 'SERVER_PORT': 0, 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'mod_python'}> view_func <function add_stage at 0xb7a1db54> * /home2/duncanm/lib/python2.4/django/contrib/admin/views/main.py in add_stage 247. if opts.has_field_type(models.FileField): 248. new_data.update(request.FILES) 249. 250. errors = manipulator.get_validation_errors(new_data) 251. manipulator.do_html2python(new_data) 252. 253. if not errors: 254. new_object = manipulator.save(new_data) ... 255. pk_value = new_object._get_pk_val() 256. LogEntry.objects.log_action(request.user.id, ContentType.objects.get_for_model(model).id, pk_value, str(new_object), ADDITION) 257. msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': opts.verbose_name, 'obj': new_object} 258. # Here, we distinguish between different save types by checking for 259. # the presence of keys in request.POST. 260. if request.POST.has_key("_continue"): ▶ Local vars Variable Value app_label 'teams' errors {} form_url '' manipulator <django.db.models.manipulators.AddManipulator object at 0xb79d3fcc> model <class 'htafc.teams.models.SquadSelector'> model_name 'squadselector' new_data <MultiValueDict: {'sub5_id': [None], 'fixture': ['16'], 'cb1_id': ['3'], 'cm1_id': ['7'], 'gk_id': ['1'], 'gk': ['1'], 'rw': ['6'], 'lb': ['5'], 'lw': ['9'], 'cb2_id': ['4'], 'rb': ['2'], 'cf1_id': ['10'], 'cm2': ['8'], 'cm1': ['7'], 'sub2_id': ['13'], 'rb_id': ['2'], 'sub4': [''], 'sub5': [''], 'sub2': ['13'], 'sub3': [''], 'sub1': ['12'], 'sub4_id': [None], 'cb2': ['4'], 'cb1': ['3'], 'sub3_id': [None], 'fixture_id': ['16'], 'cf2': ['11'], 'cf1': ['10'], 'lw_id': ['9'], 'sub1_id': ['12'], 'lb_id': ['5'], 'cf2_id': ['11'], 'cm2_id': ['8'], 'rw_id': ['6']}> object_id_override None opts <Options for SquadSelector> post_url '../' post_url_continue '../%s/' request <ModPythonRequest path:/admin/teams/squadselector/add/, GET:<MultiValueDict: {}>, POST:<MultiValueDict: {'sub4': [''], 'rw': ['6'], 'lb': ['5'], 'sub3': [''], 'sub1': ['12'], 'cf2': ['11'], 'fixture': ['16'], 'cb2': ['4'], 'lw': ['9'], 'cb1': ['3'], 'rb': ['2'], 'sub2': ['13'], 'sub5': [''], 'gk': ['1'], 'cm2': ['8'], 'cm1': ['7'], 'cf1': ['10']}>, COOKIES:{'dbx-pagemeta': 'grabit=0-,1-,2+,3-, 4+,5+&advancedstuff=0-', 'dbx-postmeta': 'grabit=0+,1+,2+,3+,4+, 5+&advancedstuff=0-', 'sessionid': '1fe6ff002f8fb560c332511c8159e2b4'}, META:{'AUTH_TYPE': None, 'CONTENT_LENGTH': 0L, 'CONTENT_TYPE': None, 'GATEWAY_INTERFACE': 'CGI/ 1.1', 'HTTP_ACCEPT': 'text/xml,application/xml,application/xhtml +xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'HTTP_ACCEPT_ENCODING': 'gzip,deflate', 'HTTP_ACCEPT_LANGUAGE': 'en- gb,en;q=0.5', 'HTTP_CONTENT_LENGTH': '107', 'HTTP_CONTENT_TYPE': 'application/x-www-form-urlencoded', 'HTTP_COOKIE': 'dbx- postmeta=grabit=0+,1+,2+,3+,4+,5+&advancedstuff=0-; sessionid=1fe6ff002f8fb560c332511c8159e2b4; dbx-pagemeta=grabit=0-,1-, 2+,3-,4+,5+&advancedstuff=0-', 'HTTP_HOST': 'duncanm.webfactional.com', 'HTTP_MAX_FORWARDS': '10', 'HTTP_REFERER': 'http://duncanm.webfactional.com/admin/teams/squadselector/add/', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv: 1.8.1.2) Gecko/20070219 Firefox/2.0.0.2', 'HTTP_X_FORWARDED_FOR': '81.105.97.255', 'HTTP_X_FORWARDED_HOST': 'duncanm.webfactional.com', 'HTTP_X_FORWARDED_SERVER': 'duncanm.webfactional.com', 'PATH_INFO': '/ admin/teams/squadselector/add/', 'PATH_TRANSLATED': None, 'QUERY_STRING': None, 'REMOTE_ADDR': '127.0.0.1', 'REMOTE_HOST': None, 'REMOTE_IDENT': None, 'REMOTE_USER': None, 'REQUEST_METHOD': 'POST', 'SCRIPT_NAME': None, 'SERVER_NAME': 'web3.webfaction.com', 'SERVER_PORT': 0, 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'mod_python'}> show_delete False * /home2/duncanm/lib/python2.4/django/db/models/manipulators.py in save 94. params[f.attname] = param 95. 96. if self.change: 97. params[self.opts.pk.attname] = self.obj_key 98. 99. # First, save the basic object itself. 100. new_object = self.model(**params) 101. new_object.save() ... 102. 103. # Now that the object's been saved, save any uploaded files. 104. for f in self.opts.fields: 105. if isinstance(f, FileField): 106. f.save_file(new_data, new_object, self.change and self.original_object or None, self.change, rel=False) 107. ▶ Local vars Variable Value auto_now_add False f <django.db.models.fields.related.ForeignKey object at 0xb7ad74ac> new_data <MultiValueDict: {'sub5_id': [None], 'fixture': ['16'], 'cb1_id': ['3'], 'cm1_id': ['7'], 'gk_id': ['1'], 'gk': ['1'], 'rw': ['6'], 'lb': ['5'], 'lw': ['9'], 'cb2_id': ['4'], 'rb': ['2'], 'cf1_id': ['10'], 'cm2': ['8'], 'cm1': ['7'], 'sub2_id': ['13'], 'rb_id': ['2'], 'sub4': [''], 'sub5': [''], 'sub2': ['13'], 'sub3': [''], 'sub1': ['12'], 'sub4_id': [None], 'cb2': ['4'], 'cb1': ['3'], 'sub3_id': [None], 'fixture_id': ['16'], 'cf2': ['11'], 'cf1': ['10'], 'lw_id': ['9'], 'sub1_id': ['12'], 'lb_id': ['5'], 'cf2_id': ['11'], 'cm2_id': ['8'], 'rw_id': ['6']}> new_object <SquadSelector: Regan Allen> param None params {'cb1_id': '3', 'cb2_id': '4', 'cf1_id': '10', 'cf2_id': '11', 'cm1_id': '7', 'cm2_id': '8', 'fixture_id': '16', 'gk_id': '1', 'id': None, 'lb_id': '5', 'lw_id': '9', 'rb_id': '2', 'rw_id': '6', 'sub1_id': '12', 'sub2_id': '13', 'sub3_id': None, 'sub4_id': None, 'sub5_id': None} self <django.db.models.manipulators.AddManipulator object at 0xb79d3fcc> * /home2/duncanm/webapps/django/htafc/teams/models.py in save 575. except KeyError: 576. pass 577. 578. for player_id in squad.values(): 579. if player_id is not None: 580. appearance = Appearance() 581. appearance.player_id = player_id 582. appearance.result = self.fixture.result ... 583. appearance.save() 584. 585. 586. # ------------------ 587. # Match Report class 588. # ------------------ ▶ Local vars Variable Value appearance Error in formatting: player_id '2' self <SquadSelector: Regan Allen> squad {'cb1_id': '3', 'cb2_id': '4', 'cf1_id': '10', 'cf2_id': '11', 'cm1_id': '7', 'cm2_id': '8', 'gk_id': '1', 'id': None, 'lb_id': '5', 'lw_id': '9', 'rb_id': '2', 'rw_id': '6', 'sub1_id': '12', 'sub2_id': '13', 'sub3_id': None, 'sub4_id': None, 'sub5_id': None} * /home2/duncanm/lib/python2.4/django/db/models/fields/related.py in __get__ 120. self.related = related 121. 122. def __get__(self, instance, instance_type=None): 123. if instance is None: 124. raise AttributeError, "%s must be accessed via instance" % self.related.opts.object_name 125. 126. params = {'%s__pk' % self.related.field.name: instance._get_pk_val()} 127. rel_obj = self.related.model._default_manager.get(**params) ... 128. return rel_obj 129. 130. def __set__(self, instance, value): 131. if instance is None: 132. raise AttributeError, "%s must be accessed via instance" % self.related.opts.object_name 133. # Set the value of the related field ▶ Local vars Variable Value instance <Fixture: Date: 2007-04-07, Venue: A, Vs: Computing 3> instance_type <class 'htafc.teams.models.Fixture'> params {'fixture__pk': 16L} self <django.db.models.fields.related.SingleRelatedObjectDescriptor object at 0xb7acc72c> * /home2/duncanm/lib/python2.4/django/db/models/manager.py in get 60. def distinct(self, *args, **kwargs): 61. return self.get_query_set().distinct(*args, **kwargs) 62. 63. def extra(self, *args, **kwargs): 64. return self.get_query_set().extra(*args, **kwargs) 65. 66. def get(self, *args, **kwargs): 67. return self.get_query_set().get(*args, **kwargs) ... 68. 69. def get_or_create(self, **kwargs): 70. return self.get_query_set().get_or_create(**kwargs) 71. 72. def create(self, **kwargs): 73. return self.get_query_set().create(**kwargs) ▶ Local vars Variable Value args () kwargs {'fixture__pk': 16L} self <django.db.models.manager.Manager object at 0xb7acc86c> * /home2/duncanm/lib/python2.4/django/db/models/query.py in get 206. "Performs the SELECT and returns a single object matching the given keyword arguments." 207. clone = self.filter(*args, **kwargs) 208. # clean up SQL by removing unneeded ORDER BY 209. if not clone._order_by: 210. clone._order_by = () 211. obj_list = list(clone) 212. if len(obj_list) < 1: 213. raise self.model.DoesNotExist, "%s matching query does not exist." % self.model._meta.object_name ... 214. assert len(obj_list) == 1, "get() returned more than one %s -- it returned %s! Lookup parameters were %s" % (self.model._meta.object_name, len(obj_list), kwargs) 215. return obj_list[0] 216. 217. def create(self, **kwargs): 218. """ 219. Create a new object with the given kwargs, saving it to the database ▶ Local vars Variable Value args () clone [] kwargs {'fixture__pk': 16L} obj_list [] self [<Result: Skirlaugh A.F.C.>, <Result: Eastrington F.C.>, <Result: Withernsea F.C.>, <Result: Skidy Millers>, <Result: North Ferriby U18's>, <Result: Market Weighton 2nds>, <Result: West Hull F.C.>, <Result: Goole Town Under 18's>, <Result: North Cave U17's>, <Result: Holme Rovers U17's>, <Result: Market Weighton U16's>, <Result: Westella Willerby Under 18's>, <Result: Computing 2>] Traceback (most recent call last): File "/home2/duncanm/lib/python2.4/django/core/handlers/base.py" in get_response 74. response = callback(request, *callback_args, **callback_kwargs) File "/home2/duncanm/lib/python2.4/django/contrib/admin/views/ decorators.py" in _checklogin 55. return view_func(request, *args, **kwargs) File "/home2/duncanm/lib/python2.4/django/views/decorators/cache.py" in _wrapped_view_func 39. response = view_func(request, *args, **kwargs) File "/home2/duncanm/lib/python2.4/django/contrib/admin/views/main.py" in add_stage 254. new_object = manipulator.save(new_data) File "/home2/duncanm/lib/python2.4/django/db/models/manipulators.py" in save 101. new_object.save() File "/home2/duncanm/webapps/django/htafc/teams/models.py" in save 582. appearance.result = self.fixture.result File "/home2/duncanm/lib/python2.4/django/db/models/fields/related.py" in __get__ 127. rel_obj = self.related.model._default_manager.get(**params) File "/home2/duncanm/lib/python2.4/django/db/models/manager.py" in get 67. return self.get_query_set().get(*args, **kwargs) File "/home2/duncanm/lib/python2.4/django/db/models/query.py" in get 213. raise self.model.DoesNotExist, "%s matching query does not exist." % self.model._meta.object_name DoesNotExist at /admin/teams/squadselector/add/ Result matching query does not exist. I have no idea what is causing this to happen, as I thought my models and methods were ok, could some please advise? Regards, Duncan DoesNotExist at /admin/teams/squadselector/add/ Result matching query does not exist. Request Method: POST Request URL: http://duncanm.webfactional.com/admin/teams/squadselector/add/ Exception Type: DoesNotExist Exception Value: Result matching query does not exist. Exception Location: /home2/duncanm/lib/python2.4/django/db/models/ query.py in get, line 213 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@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-users?hl=en -~----------~----~----~----~------~----~------~--~---