书接上篇BLOG。

当我们可以用manage.py自定义命令来生成模拟数据时,

我们面对的就是如何操作ORM的问题了。

这两天,我为我们的内部系统的所有数据表,都生成了模拟数据。

有几个心得,记录于此。

一,将命令拆分

因为一个fake_command文件太大了,所以我们要将函数放在不同的文件里,便于管理。

from django.core.management.base import BaseCommand

from .fake_user import fake_user_data

class Command(BaseCommand):
    help = 'It is a fake command, Import init data for test'

    def handle(self, *args, **options):
        self.stdout.write(self.style.SUCCESS('begin fake data'))
        fake_user_data()
        self.stdout.write(self.style.SUCCESS("end fake data"))

二,生成模拟用户,建立用户组,并将用户加入组

这时要注意,django orm里创建用户,用的是create_user及create_superuser方法。

而将用户加入用户组,则最好用下面的admin_group.user_set.set(admin_users)操作。

from django.contrib.auth.models import User, Group

def fake_user_data():
    User.objects.all().delete()
    Group.objects.all().delete()
    print('delete all user and group data')
    User.objects.create_user(username='Dylan', password="password")
    User.objects.create_user(username='Tyler', password="password")
    User.objects.create_user(username='Kyle', password="password")
    User.objects.create_user(username='Dakota', password="password")
    User.objects.create_user(username='Marcus', password="password")
    User.objects.create_user(username='Samantha', password="password")
    User.objects.create_user(username='Kayla', password="password")
    User.objects.create_user(username='Sydney', password="password")
    User.objects.create_user(username='Courtney', password="password")
    User.objects.create_user(username='Mariah', password="password")
    User.objects.create_user(username='tom', password="password")
    User.objects.create_user(username='mary', password="password")
    admin = User.objects.create_superuser('admin', 'admin@demon.com', 'xxx')
    root = User.objects.create_superuser('root', 'root@demon.com', 'xxx')
    kevin = User.objects.create_superuser('kevin', 'kevin@abc.com', 'xxx')
    admin_group = Group.objects.create(name='admin')
    Group.objects.create(name='test')
    Group.objects.create(name='dev')
    Group.objects.create(name='operate')
    admin_users = [admin, root, kevin]
    admin_group.user_set.set(admin_users)
    print('create all user and group data')

为django平台生成模拟用户,建立用户组,并将用户加入组的更多相关文章

  1. Linux系列教程(十五)——Linux用户和用户组管理之用户管理命令

    上篇博客我们介绍了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow:然后介绍了用户组信息文件/etc/group,用户组密码文件/etc/gshado ...

  2. Linux 新建用户、用户组,给用户分配权限(chown、useradd、groupadd、userdel、usermod、passwd、groupdel)

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  3. Linux 新建用户、用户组,给用户分配权限

    注:内容来自网络 Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对 ...

  4. Linux系统的用户和用户组管理

    一.用户账户管理 Linux/Unix是一个用户.多任务的操作系统:在讲Linux账号及账户组管理之前,先简单了解一下多用户.多任务操作系统的基本概念. Linux的单用户多任务 在Linux下,当你 ...

  5. linux系统用户以及用户组管理

    本系列的博客来自于:http://www.92csz.com/study/linux/ 在此,感谢原作者提供的入门知识 这个系列的博客的目的在于将比较常用的liunx命令从作者的文章中摘录下来,供自己 ...

  6. Linux 用户和用户组操作

    [认识/etc/passwd和/etc/shadow] 这两个文件可以说是linux系统中最重要的文件之一.如果没有这两个文件或者这两个文件出问题,则你是无法正常登录linux系统的. /etc/pa ...

  7. linux入门教程(七) linux系统用户以及用户组管理

    关于这部分内容,笔者在日常的linux系统管理工作中用到的并不多,但这并不代表该内容不重要.毕竟linux系统是一个多用户的系统,每个账号都干什么用,你必须了如指掌.因为这涉及到一个安全的问题. [认 ...

  8. 数据库和Django model 生成和反向生成

    Django 脚本生成数据表 建立映射关系 如果询问时区时间,选1 然后输入timezone.now() python manage.py makemigrations (如果有子应用的话子应用名称填 ...

  9. Linux 的基本操作(系统用户及用户组的管理)

    [认识/etc/passwd和/etc/shadow] 这两个文件可以说是linux系统中最重要的文件之一.如果没有这两个文件或者这两个文件出问题,则你是无法正常登录linux系统的. /etc/pa ...

随机推荐

  1. vue项目post请求405报错解决办法。

    步骤一: 确定ajax语法没有错误. 步骤二: 与后台对接确认请求是否打到nginx上? 步骤三: 检查nginx是否配置了事件转发,比如我们的接口是在,当前地址的8100端口上,并且接口地址上有v1 ...

  2. HTTP协议(3):HTTP1.1与HTTP1.0的区别

    翻了下HTTP1.1的协议标准RFC2616,下面是看到的一些它跟HTTP1.0的差别. 1. Persistent Connection持久连接 在HTTP1.0中,每对Request/Respon ...

  3. 搞ACM的你伤不起[转载] 原作者:RoBa

    劳资六年前开始搞ACM啊!!!!!!!!!! 从此踏上了尼玛不归路啊!!!!!!!!!!!! 谁特么跟劳资讲算法是程序设计的核心啊!!!!!! 尼玛除了面试题就没见过用算法的地方啊!!!!!! 谁再跟 ...

  4. Linux基础命令【记录】

    后台运行详情:https://www.cnblogs.com/little-ant/p/3952424.html 查看端口.查找等命令 根据关键字查找文件信息: cat <文件名> | g ...

  5. Ubuntu16.04.2安装Tensorflow

    安装aptitude $ sudo apt-get install aptitude 安装python-pip python-dev $ sudo aptitude install python-pi ...

  6. 二分算法的应用——最大化平均值 POJ 2976 Dropping tests

    最大化平均值 有n个物品的重量和价值分别wi 和 vi.从中选出 k 个物品使得 单位重量 的价值最大. 限制条件: <= k <= n <= ^ <= w_i <= v ...

  7. PHP远程连接mysql报错处理办法

    在万网弄了个虚拟主机,想远程连mysql调试(本地4G如果开mysql内存不够!),一直报错: mysqlnd cannot connect to MySQL 4.1+ using the old i ...

  8. MapReduce (MRV1)设计理念与基本架构

    MapReduce 是一个分布式计算框架,主要由两部分组成:编程模型和运行时环境. 其中,编程模型为用户提供了非常易用的编程接口,用户只需要像编写串行程序一样实现几个简单的函数即可实现一个分布式程序, ...

  9. asp.net中GridView传多个值到其它页面的方法

    网站开发中,在页面之间的跳转,经常会用到传值,其中可能会传递多个值. 一.CommadArgument传多个值到其他页面. 像Gridview dataList repeater等数据绑定控件中,可以 ...

  10. shell if判断中常用的a-z表达式含义

    shell if判断中常用的a-z表达式含义 可通过在在linux中man test命令查看下列参数的详细用法   [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 ...