Hello Carl,
I really appreciate your comments and I agree with you. I'll put here soon
the code I'm writing, maybe this can be helpful for others too.
Thanks!
Em sexta-feira, 29 de maio de 2015 18:53:25 UTC-3, Carl Meyer escreveu:
>
> Hello Carlos,
>
> On 05/29/2015 03:19 PM, Carlos Ribas wrote:
> > Hello,
> >
> > I have to confess that I did not understand your suggestion. How this
> > will help me to reverse the logic of my system? I mean, instead of User
> > with or without a profile (the Person class, in my case), I want a
> > Person with or without a User.
> >
> > Thanks anyway
> >
> > Em quarta-feira, 27 de maio de 2015 12:54:59 UTC-3, Carlos Ribas
> escreveu:
> >
> > Hello All,
> >
> > I am currently extending the existing User model to store additional
> > information. So, basically I have:
> >
> > # models.py
> > class Person(models.Model):
> > user = models.OneToOneField(User, verbose_name=_('User'))
> > zipcode = models.CharField(_('Zip Code'), max_length=9,
> > blank=True, null=True)
> > street = models.CharField(_('Address'), max_length=255,
> > blank=True, null=True)
> > ...
> >
> > #admin.py
> > class PersonAdmin(admin.StackedInline):
> > model = Person
> > ...
> >
> > class UserAdmin(UserAdmin):
> > inlines = (PersonAdmin, )
> > ...
> >
> > admin.site.unregister(User)
> > admin.site.register(User, UserAdmin)
> >
> >
> > The problem is that my system should be able to register a new
> > person, but this person may not need an account on the system (I
> > just need to have his/her information). Right now, I can not create
> > a person without an account. Besides that, first_name and last_name
> > fields are not in the person class.
> >
> > I am wondering what is the best solution for my case. Probably, I
> > will need to move the first_name and last_name fields to the Person
> > class, and to do that, I will have to create custom users, is that
> > right?
>
> Yes, the best solution for your case (and for all Django projects) is to
> use a custom User model.
>
> In order to have every User linked to a Person, but not all Persons
> linked to Users, you need to place the OneToOneField on the User model
> pointing to Person, rather than the other way around. And in order to do
> that, you need to have control over the User model.
>
> (You _could_ sort of do it without a custom User model by having a
> ManyToMany relationship between User and Person, but that allows a wide
> variety of situations you don't want to allow.)
>
> > If that is the case, may I just copy and paste the lines shown here
> > (
> https://github.com/django/django/blob/master/django/contrib/auth/models.py
> > <
> https://github.com/django/django/blob/master/django/contrib/auth/models.py>)
>
> > and remove the lines about first_name and last_name?
>
> No, you should follow the documentation on custom User models.
>
> You'll want to inherit from AbstractBaseUser instead of AbstractUser, so
> as to not have first_name and last_name fields. You'll need to add the
> PermissionsMixin and probably a few other fields (including a username
> field). The docs should explain what you need to know.
>
> Carl
>
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/551d6733-a4a5-48cb-acc6-e71ebd045fcf%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.