﻿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
12531	Model field name 'hiding' should not be permitted when field is defined in one of the parent models	Vasily Ivanov	nobody	"According to [http://docs.djangoproject.com/en/1.1/topics/db/models/#field-name-hiding-is-not-permitted] it is not permitted to hide field name in child
model and django would raise a !FieldError exception. And that's
exactly what happens:

{{{
class Phone(models.Model):
  pass

class Service(models.Model):
   phone = models.ForeignKey(Phone, related_name='services')

class Call(Service):
   phone = models.ForeignKey(Phone, related_name='calls')
}}}

{{{
> manage.py validate
django.core.exceptions.FieldError: Local field 'phone' in class 'Call' clashes with field of similar name from base class 'Service'
}}}

works as expected... no problem

However, if I add new !IntermediateService model like this:

{{{
class Phone(models.Model):
  pass

class Service(models.Model):
   phone = models.ForeignKey(Phone, related_name='services')

class IntermediateService(Service):
   class Meta:
       abstract = True

class Call(IntermediateService):
   phone = models.ForeignKey(Phone, related_name='calls')
}}}

...surprisingly it validates:

{{{
> manage.py validate
0 errors found
}}}

and generates sqls for postgresql:
{{{
> manage.py sql app

CREATE TABLE ""app_phone"" (
   ""id"" serial NOT NULL PRIMARY KEY
);
CREATE TABLE ""app_service"" (
   ""id"" serial NOT NULL PRIMARY KEY,
   ""phone_id"" integer NOT NULL REFERENCES ""app_phone"" (""id"")
DEFERRABLE INITIALLY DEFERRED
);
CREATE TABLE ""app_call"" (
   ""service_ptr_id"" integer NOT NULL UNIQUE REFERENCES
""app_service"" (""id"") DEFERRABLE INITIALLY DEFERRED,
   ""phone_id"" integer NOT NULL REFERENCES ""app_phone"" (""id"")
DEFERRABLE INITIALLY DEFERRED
);
}}}

Looks like a bug to me."	Bug	closed	Database layer (models, ORM)	1.1	Normal	duplicate		bas@…	Accepted	0	0	0	0	0	0
