id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 527 OneToOne relations are broken since new model style released mordaha Adrian Holovaty "{{{ #================================================================================ # Document #================================================================================ class Document(meta.Model): #MAIN FIELDS doc_date = meta.DateField('date') doc_subj = meta.CharField('subj', maxlength=250) doc_text = meta.TextField('text', maxlength=250, blank=True) #================================================================================ # Letter #================================================================================ class Letter(meta.Model): #IS LETTER document = meta.OneToOneField(Document) doc_number = meta.CharField('doc number', maxlength=20) # from and to ForeignKeys were skipped #================================================================================ # Order #================================================================================ class Order(meta.Model): #IS ORDER letter = meta.OneToOneField(Letter) order_date_plan = meta.DateField('order date plan') order_date_fakt = meta.DateField('order date fakt', blank=True, null=True) }}} Document can be simple or Letter, and Document that is Letter can be an Order or not. This example works fine with old model syntax. With a new-style model syntax any relations between Letter - Order are fail. Document - Letter relation works fine. {{{ >>> from django.models.main import * >>> d = documents.get_object(pk=21) >>> l = letters.get_object(pk=21) >>> o = orders.get_object(pk=21) >>> d.get_letter() Letter 21 >>> l.get_document() Document 21 }}} OK Now try Letter - Order {{{ >>> l.get_order() Traceback (most recent call last): File """", line 1, in ? File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\utils\functi onal.py"", line 3, in _curried return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.item s())) File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\core\meta\__ init__.py"", line 931, in method_get_related kwargs['%s__%s__exact' % (rel_field.name, rel_field.rel.to.pk.name)] = getat tr(self, rel_field.rel.field_name) AttributeError: 'Letter' object has no attribute 'document' >>> >>> >>> >>> o.get_letter() Traceback (most recent call last): File """", line 1, in ? File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\utils\functi onal.py"", line 3, in _curried return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.item s())) File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\core\meta\__ init__.py"", line 873, in method_get_many_to_one retrieved_obj = mod.get_object(**{'%s__exact' % field_with_rel.rel.field_nam e: val}) File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\utils\functi onal.py"", line 3, in _curried return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.item s())) File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\core\meta\__ init__.py"", line 1083, in function_get_object obj_list = function_get_list(opts, klass, **kwargs) File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\core\meta\__ init__.py"", line 1123, in function_get_list return list(function_get_iterator(opts, klass, **kwargs)) File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\core\meta\__ init__.py"", line 1105, in function_get_iterator select, sql, params = function_get_sql_clause(opts, **kwargs) File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\core\meta\__ init__.py"", line 1302, in function_get_sql_clause tables2, join_where2, where2, params2, _ = _parse_lookup(kwargs.items(), opt s) File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\core\meta\__ init__.py"", line 1231, in _parse_lookup _throw_bad_kwarg_error(kwarg) File ""C:\Python24\Lib\site-packages\django-1.0.0-py2.4.egg\django\core\meta\__ init__.py"", line 1181, in _throw_bad_kwarg_error raise TypeError, ""got unexpected keyword argument '%s'"" % kwarg TypeError: got unexpected keyword argument 'document__exact' >>> >>> }}} " defect closed Metasystem critical fixed Unreviewed 0 0 0 0 0 0