Sunday, October 23, 2016

Re: Multiple Types of Account with Abstract User

I will try it but I have a question that how can I link this to Django-regisration-redux app. Like if somebody tries to sign in they should have registration choices within registration app to save my time.

As I visualize it that I should be able to login as supplier from registration redux template system as supplier/designer or whatever role as user I chose.


Thank you for your help and will try and let you know about the update.

Regards,
Shazia

On Sun, Oct 23, 2016 at 9:26 PM, Asad Jibran Ahmed <surfer.a1@gmail.com> wrote:
In that case I suggest you create multiple models, one for each type of user. For example, you could have a SupplierProfile, DesignerProfile, etc...

The reason I suggest multiple profile models, instead of just one model with a configurable account type field, is that I assume each of these user types will have it's own data. For example the SupplierProfile might need a bank account details field, whereas a designer probably does not.

So create multiple models, named similar to SupplierProfile, DesignerProfile, etc and have each of those link to the Django user model via a OneToOne key. This is similar to what you're doing with your UserDetails models.

Hope that helps.


On Mon, Oct 24, 2016 at 7:18 AM, Shazia Nusrat <shazianusra@gmail.com> wrote:
I've deleted DB and migrations I had previously.
But still can't figure this out. What I need is....that multiple shops needs to get registered with my ecommerce store as well as designers and as well as referrers to sell products and then simple registration while checkout is in progress.

I have simple idea that I need to somehow create submodel from built-in User model with abstract model. Then I want that if user selects Customer then customer form should appear, if user says Designer it should present designer and so on except the checkout user that I figured out to complete the order with guest user by catching session ID and user's email upon checkout.

This part I can't figure out. Moreover all these account should have access to relevant content. Like Supplier should be able to manage inventory or his/her products. Designer only should sell their products in bulk etc. So if I fix this issue then I can move forward otherwise its a dead lock for me from 4 last hours.

Please advise.

Regards,

Shazia

On Sun, Oct 23, 2016 at 7:53 PM, Asad Jibran Ahmed <surfer.a1@gmail.com> wrote:
Did you change the AUTH_USER_MODEL setting after you had already run python manage.py migrate once (or more) before? From the error I guess what's happening is that you already have a User model in place. It was probably created when you first ran Django migrations without specifying a custom user model.

If that is the case, and you really want a custom user model, you'll have to ensure that the user model is the first model create in your app. For details look at the warning given at https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#substituting-a-custom-user-model.

From what I'm seeing of your models, you only seem to want to add extra fields to each user. You can also do that by just pointing your UserDetails model to the existing django.contrib.auth.models.User model, and adding the type information in your UserDetails model instead. That might work for you. Otherwise you'll have to remove your existing database and run migrations from start.


On Mon, Oct 24, 2016 at 4:37 AM, Shazia Nusrat <shazianusra@gmail.com> wrote:
Hi,
I am trying to create multiple types of users in my django e-commerce project by extending built-in Django user model but I am having issue.

Would appreciate if someone can guide me to right direction.
Following is the code in my "accounts" app.

from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    type_choices = (
        ('Supplier', 'Supplier'),
        ('Designer', 'Designer'),
        ('Shop', 'Shop'),
        ('Referrer', 'Referrer'),
        ('User', 'User'),
    )
    user_type = models.CharField(max_length=2,
                                 choices=type_choices,
                                 default='User')

class UserDetails(models.Model):
    type = models.OneToOneField(CustomUser)
    extra_info = models.CharField(max_length=200)

My settings.py includes 'accounts' in installed app and variable included for extending models in settings.py:

AUTH_USER_MODEL = 'accounts.Customer'

Error:


ERRORS:
accounts.CustomUser.groups: (fields.E304) Reverse accessor for 'CustomUser.group
s' clashes with reverse accessor for 'User.groups'.
        HINT: Add or change a related_name argument to the definition for 'Custo
mUser.groups' or 'User.groups'.
accounts.CustomUser.user_permissions: (fields.E304) Reverse accessor for 'Custom
User.user_permissions' clashes with reverse accessor for 'User.user_permissions'
.
        HINT: Add or change a related_name argument to the definition for 'Custo
mUser.user_permissions' or 'User.user_permissions'.
auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with
reverse accessor for 'CustomUser.groups'.
        HINT: Add or change a related_name argument to the definition for 'User.
groups' or 'CustomUser.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permis
sions' clashes with reverse accessor for 'CustomUser.user_permissions'.
        HINT: Add or change a related_name argument to the definition for 'User.
user_permissions' or 'CustomUser.user_permissions'.


Please advise.

Regards,
Shazia

--
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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAD83tOxKnQCeWyWjYmbxo7iaxmsysk8WJs-zy44GZbDXr93iEg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

--
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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CA%2BYYaWfEdFhBjv0M%2BC3XApq1z2-k1tGG6orwwDdcOwn2JezOrw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

--
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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAD83tOwAv485tsY%3D5NLnXK2N%2BOwY%2Bj5aQXy9Dk_nTdJupJPm9g%40mail.gmail.com.

For more options, visit https://groups.google.com/d/optout.

--
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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CA%2BYYaWft0XDYVg-2UPca%3D4gMjgOYRM02bnMcXxgmCkg6RVt18w%40mail.gmail.com.

For more options, visit https://groups.google.com/d/optout.

--
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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAD83tOxT%2BdbfiwH24R3zwJUScVZ9hhxWgZop6fMw_Wt%2BgZzpOw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment