Re: Database records being overriden with a multi-table inheritance schema
I think a i figured out a solution but i don't have a complete understanding about the problem to explain exactly what i was doing wrong, but here is my schema now class CommonInfo(models.Model): class Meta: abstract = True class User(models.Model): user = models.OneToOneField('auth.user') class Person(User, CommonInfo): # specific fields pass class LegalEntity(User, CommonInfo): # specific fields pass class Seller(User): # specific fields pass class PersonSeller(Person, Seller): # specific fields pass class LegalEntitySeller(LegalEntity, Seller): # specific fields pass class Supervisor(Seller): # specific fields supervisees = models.ManyToManyField('Seller', related_name='supervisors') class Customer(User): # specific fields pass class PersonCustomer(Person, Customer): # specific fields pass class LegalEntityCustomer(LegalEntity, Customer): # specific fields pass class Manager(User): # specific fields pass Unfortunately now i have a table user that control the generation of the dynamic ids to the models ensuring that i will not have a LegalEntityCustomer or PersonCustomer refering the same Customer, and as i needed a field user to refer to a django user i took the opportunity and used the same model User to define this field. Em quarta-feira, 26 de dezembro de 2012 10h13min20s UTC-2, Marcelo Mendes Pereira escreveu: > > Hi, i am trying to model the database for a project that i am developing i > have the following models > > class CommonInfo(models.Model): > #fields > class Meta: > abstract = True > class Person(CommonInfo): > #fields > class LegalEntity(CommonInfo): > #fields > class User(models.Model): > user = models.OneToOneField('auth.user', unique=True) > class Meta: > abstract = True > class Customer(User): > #implicit user referece to a django user 'auth.user' > > class PersonCustomer(Person, Customer): > #implicit user referece to a django user 'auth.user' > > class LegalEntityCustomer(LegalEntity, Customer): > #implicit user referece to a django user 'auth.user' > > I created the ModelAdmin to each model and setted a custom form to create > a django user every time a customer is created, but the problem i am > getting is that when i create a PersonCustomer (the custom form creates a > django user as expected) and after that a LegalEntityCustomer (again > another django user is created as expected) the PersonCustomer has its user > reference changed to the django user created to LegalEntityCustomer, > actually if i change the order of creation the same thing happens but this > time the LegalEntityCustomer that has it's user reference changed, anybody > know what i am doing wrong? Thanks, in advance. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/U_5SkUFAxRIJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
Re: Database records being overriden with a multi-table inheritance schema
Thanks for the reply. I omitted my entire schema i should had mentioned that i have the models Seller, Supervisor (which is a seller and supervises other sellers) and Manager and the seller can be a Person and LegalEntity too that is why i didn't made Person or LegalEntity inherit from Customer because not all Persons or LegalEntities are customers. Em quarta-feira, 26 de dezembro de 2012 13h49min39s UTC-2, Gerald Klein escreveu: > > It seems like you have the same idea recurring twice in this model. This > IMHO doesn't require multiple inheritance. I would call commoninfo customer > with it's fields and inherit django user then Person and LegalEntity > inherit customer (which inherits django user) and add on their specific > fields and skip the PersonCustomer and the LegalEntityCustomer. > > Customer would inherit the django userid, and so then would person and > legalentity. They could still be identitied with an 'is a' customer' or 'is > a' Person or legal entity. > > hope this helps > > --jerry > > On Wed, Dec 26, 2012 at 7:50 AM, Marcelo Mendes Pereira < > mpmar...@gmail.com > wrote: > >> Customer > > > > > -- > > Gerald Klein DBA > > cont...@geraldklein.com > > www.geraldklein.com <http://geraldklein.com/> > > geraldklein.wordpress.com > > j...@zognet.com > > 708-599-0352 > > > Arch Awesome, Ranger & Vim the coding triple threat. > > Linux registered user #548580 > > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/MBIkIAxr09IJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
Re: Database records being overriden with a multi-table inheritance schema
The problem seems to happen because of both PersonCustomer and LegalEntityCustomer inheriting from Customer, and their primary key being a foreign key to Customer primary key, when as LegalEntityCustomer is created its primary key is set to 1 the same of PersonCustomer and that way both references the first Customer created, the desired behavior should be create a customer to each PersonCustomer or LegalEntityCustomer, anybody know how to correct this problem? in the model schema definition? Em quarta-feira, 26 de dezembro de 2012 10h13min20s UTC-2, Marcelo Mendes Pereira escreveu: > > Hi, i am trying to model the database for a project that i am developing i > have the following models > > class CommonInfo(models.Model): > #fields > class Meta: > abstract = True > class Person(CommonInfo): > #fields > class LegalEntity(CommonInfo): > #fields > class User(models.Model): > user = models.OneToOneField('auth.user', unique=True) > class Meta: > abstract = True > class Customer(User): > #implicit user referece to a django user 'auth.user' > > class PersonCustomer(Person, Customer): > #implicit user referece to a django user 'auth.user' > > class LegalEntityCustomer(LegalEntity, Customer): > #implicit user referece to a django user 'auth.user' > > I created the ModelAdmin to each model and setted a custom form to create > a django user every time a customer is created, but the problem i am > getting is that when i create a PersonCustomer (the custom form creates a > django user as expected) and after that a LegalEntityCustomer (again > another django user is created as expected) the PersonCustomer has its user > reference changed to the django user created to LegalEntityCustomer, > actually if i change the order of creation the same thing happens but this > time the LegalEntityCustomer that has it's user reference changed, anybody > know what i am doing wrong? Thanks, in advance. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/X3UWwv9QrO4J. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
Database records being overriden with a multi-table inheritance schema
Hi, i am trying to model the database for a project that i am developing i have the following models class CommonInfo(models.Model): #fields class Meta: abstract = True class Person(CommonInfo): #fields class LegalEntity(CommonInfo): #fields class User(models.Model): user = models.OneToOneField('auth.user', unique=True) class Meta: abstract = True class Customer(User): #implicit user referece to a django user 'auth.user' class PersonCustomer(Person, Customer): #implicit user referece to a django user 'auth.user' class LegalEntityCustomer(LegalEntity, Customer): #implicit user referece to a django user 'auth.user' I created the ModelAdmin to each model and setted a custom form to create a django user every time a customer is created, but the problem i am getting is that when i create a PersonCustomer (the custom form creates a django user as expected) and after that a LegalEntityCustomer (again another django user is created as expected) the PersonCustomer has its user reference changed to the django user created to LegalEntityCustomer, actually if i change the order of creation the same thing happens but this time the LegalEntityCustomer that has it's user reference changed, anybody know what i am doing wrong? Thanks, in advance. -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/j05usxX1ZGQJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.