Hi!

I prefer using OnetoOne with a pre_delete signal to remove user from a
pirncipal object instance:

from django.contrib.auth.models import User
from django.db.models.signals import pre_delete
from django.dispatch import receiver

class Customer(User):
    user = models.OneToOneField(User)

@receiver(pre_delete, sender=Customer)
def delete_user_customer(sender, instance, **kwargs):
    user = User.objects.filter(pk=instance.user.id)
    if user:
        user.delete()

class Seller(User):
    user = models.OneToOneField(User)

@receiver(pre_delete, sender=Seller)
def delete_user_seller(sender, instance, **kwargs):
    user = User.objects.filter(pk=instance.user.id)
    if user:
        user.delete()



2012/7/13 sdonk <alessandro.den...@gmail.com>

> Hi,
> I'm starting a new project and for the first time I need to extend the
> User model.
> I read the documentation and I googled a lot to try to figure out what is
> the best approach but I got confused.
>
> What's the the best approach?
>
> Class inheritance:
>
> from django.contrib.gis.db import models
> from django.contrib.auth.models import User, UserManager
>
> class myUser(User):
>     birthday = models.DateField(null=True, blank=True)
>     address = models.CharField(max_length=255, null=True, blank=True)
>
>     objects = UserManager()
>
> Or OneToOneField (as doc suggests)
>
>
> from django.contrib.gis.db import models
> from django.contrib.auth.models import User
> from django.db.models.signals import post_save
>
> class myUser(User):
>     user = models.OneToOneField(User)
>     birthday = models.DateField(null=True, blank=True)
>     address = models.CharField(max_length=255, null=True, blank=True)
>
>     def __unicode__(self):
>           return u'%s' % self.user
>
> def create_user_profile(sender, instance, created, **kwargs):
>     if created:
>         myUser.objects.create(user=instance)
>
> post_save.connect(create_user_profile, sender=User)
>
> Thanks,
>
> Alex
>
>  --
> 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/-/KtEPwiHoWbUJ.
> 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.
>

-- 
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 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to