在Django中从命令行创建用户

时间:2017-09-02 03:26:23

标签: python django python-3.x django-models

我现在很困惑。我在一个项目中有3个应用程序。

App1:从最终用户(基于Web视图的应用程序)

使用

App2:从服务提供商(网络服务)

使用

App3:从系统管理员处使用。

我想为每个应用程序使用django身份验证系统。我可以让django项目来验证App1的用户。但是,我如何同时使用App2和App3的身份验证系统。

当我运行python manage.py createsuperuser命令时,django会成为App1的超级用户。如何使用此命令为App2和App3制作?

有人有任何想法吗?请帮我。

Models.py

### This table is for end user.
class RemoshinUser(models.Model):

    user = models.OneToOneField(User)
    user_type = models.SmallIntegerField(default=1)
    kana_name = models.CharField(max_length=128, blank=True)
    date_of_birth = models.DateField(blank=True, null=True)
    sex = models.SmallIntegerField(null=True)
    postno = models.CharField(max_length=7, blank=True)
    address1 = models.CharField(max_length=128)
    address2 = models.CharField(max_length=128, blank=True)
    telno = models.CharField(max_length=16, blank=True)
    photo = models.ImageField(upload_to='users/%Y/%m/%d', blank=True)

    create_date = models.DateTimeField(auto_now_add=True)
    modify_date = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'remosys_remoshin_user_tbl'
        swappable = 'AUTH_USER_MODEL'


### This table is for service provider.
class RemoshinDoctor(models.Model):
    user = models.OneToOneField(User)
    user_type = models.SmallIntegerField(default=2)
    doctor_id = models.CharField(max_length=16, primary_key=True)
    clinic_id = models.ForeignKey(Clinic)
    photo = models.ImageField(blank=True, null=True)
    create_date = models.DateTimeField(auto_now_add=True)
    modify_date = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'remosys_remoshin_doctor_tbl'



### This table is for system administrator.
class RemoshinManager(models.Model):
    user = models.OneToOneField(User)
    user_type = models.SmallIntegerField(default=3)
    manager_id = models.CharField(max_length=16, primary_key=True)
    create_date = models.DateTimeField(default=timezone.now)
    modify_date = models.DateTimeField(default=timezone.now)

    class Meta:
        db_table = 'remosys_remoshin_manager_tbl'

2 个答案:

答案 0 :(得分:7)

您可以使用以下方法从命令行创建用户。但无论何时创建用户,都会为整个项目创建,而不是为一个应用程序创建。

user@hostname> manage.py shell
>>> from django.contrib.auth.models import User
>>> user=User.objects.create_user('username', password='userpassword')
>>> user.is_superuser=False
>>> user.is_staff=False
>>> user.save()

答案 1 :(得分:0)

如果您扩展了基本用户模型,则将@Astik Anand答案中的第一个命令更改为:

从django.contrib.auth导入get_user_model

User = get_user_model()