﻿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
16176	Overwriting a property with field during model inheritance.	czepiel.artur@…	Thomas_Moronez	"Documentation says (in https://docs.djangoproject.com/en/1.3/topics/db/models/#field-name-hiding-is-not-permitted paragraph) that:

This restriction only applies to attributes which are Field instances. Normal Python attributes can be overridden if you wish. It also only applies to the name of the attribute as Python sees it: if you are manually specifying the database column name, you can have the same column name appearing in both a child and an ancestor model for multi-table inheritance (they are columns in two different database tables).

However.. I came up today with setup like this:

{{{
 1 from django.db import models
 2 
 3 # Create your models here.
 4 
 5 class SomeTestModel(models.Model):
 6     some_field = models.CharField(max_length=100)
 7 
 8     class Meta:
 9         abstract = True
10 
11     @property                                                                                         
12     def other_field(self):
13         return ""[OTHER] %s"" % self.some_field
14 
15 
16 
17 class OtherModel(SomeTestModel):
18     other_field = models.CharField(max_length=100)
19 
20 
21 class AndMoreOther(SomeTestModel):
22     not_important_field = models.CharField(max_length=100)

}}}

And then if you do:


{{{
>>> from testapp.models import *
>>> o = OtherModel()
Traceback (most recent call last):
  File ""<console>"", line 1, in <module>
  File ""/home/arturstudio/PROJEKTY/tempdjango/inh/src/django/django/db/models/base.py"", line 357, in __init__
    setattr(self, field.attname, val)
AttributeError: can't set attribute


}}}

Since my models where a lot bigger and more complicate, it took me almost all day to figure out that the problem was a @property from a base model, and my suggestion is that there should be at least a warning somewhere (during model's __init__ perhaps) that could be more precise about why attribute couldn't been set. (or attribute to which object (either Model or Field).

I tried it on 1.2 and 1.4 pre-alpha SVN-16338

To reproduce you just need to put the models.py from above in some app.
"	Bug	closed	Database layer (models, ORM)	dev	Normal	fixed		teraom	Ready for checkin	1	0	0	0	0	0
