书接上篇BLOG。

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

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

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

有几个心得,记录于此。

一,将命令拆分

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

  1. from django.core.management.base import BaseCommand
  2.  
  3. from .fake_user import fake_user_data
  4.  
  5. class Command(BaseCommand):
  6. help = 'It is a fake command, Import init data for test'
  7.  
  8. def handle(self, *args, **options):
  9. self.stdout.write(self.style.SUCCESS('begin fake data'))
  10. fake_user_data()
  11. self.stdout.write(self.style.SUCCESS("end fake data"))

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

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

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

  1. from django.contrib.auth.models import User, Group
  2.  
  3. def fake_user_data():
  4. User.objects.all().delete()
  5. Group.objects.all().delete()
  6. print('delete all user and group data')
  7. User.objects.create_user(username='Dylan', password="password")
  8. User.objects.create_user(username='Tyler', password="password")
  9. User.objects.create_user(username='Kyle', password="password")
  10. User.objects.create_user(username='Dakota', password="password")
  11. User.objects.create_user(username='Marcus', password="password")
  12. User.objects.create_user(username='Samantha', password="password")
  13. User.objects.create_user(username='Kayla', password="password")
  14. User.objects.create_user(username='Sydney', password="password")
  15. User.objects.create_user(username='Courtney', password="password")
  16. User.objects.create_user(username='Mariah', password="password")
  17. User.objects.create_user(username='tom', password="password")
  18. User.objects.create_user(username='mary', password="password")
  19. admin = User.objects.create_superuser('admin', 'admin@demon.com', 'xxx')
  20. root = User.objects.create_superuser('root', 'root@demon.com', 'xxx')
  21. kevin = User.objects.create_superuser('kevin', 'kevin@abc.com', 'xxx')
  22. admin_group = Group.objects.create(name='admin')
  23. Group.objects.create(name='test')
  24. Group.objects.create(name='dev')
  25. Group.objects.create(name='operate')
  26. admin_users = [admin, root, kevin]
  27. admin_group.user_set.set(admin_users)
  28. 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. ubuntu thrift

    1.下载 http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.2/thrift-0.9.2.tar.gz 2.解压 tar -xvf thrif ...

  2. P2657 [SCOI2009]windy数

    P2657 [SCOI2009]windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B ...

  3. 转:AutoLayout中的Content Hugging 和 Content Compression Resistance

    OS6中引入了AutoLayout,极大的方便了UI元素的布局,现在已经过去一年了,并且大部分设备的系统也已经升级到了iOS6,是时候要使用此项技术了. 在AutoLayout的学习中有两个概念官方文 ...

  4. 判断android是否是debug

    1.使用BuildConfig.DEBUG,这个在住modul里面是有效的,但是在有依赖库里面使用就会一直返回false,可以通过下面的方法解决:在library的build.gradle中添加以下代 ...

  5. core EFCore 开始尝试

    准备工作: 工程:core + console 引用包: Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft ...

  6. python学习笔记2--list

    一.list操作 list=['xiaohei','xiaobai','xiaohong']#定义一个数组 name=[]#定义一个空数组 #查 #下标是从0开始 print(list[1]) #-1 ...

  7. python json dumps loads

    请看以上图片可知 1. python requests里面返回的是json 字符串, 说白了是字符串.不能直接取里面对应的值. 2. 取值的话,需要把json字符串转换成字典, 用json.loads ...

  8. 基本控件文档-UISegment属性

    CHENYILONG Blog 基本控件文档-UISegment属性 Fullscreen   UISegment属性技术博客http://www.cnblogs.com/ChenYilong/ 新浪 ...

  9. C语言入门教程-(4)常量和变量

    1.常量和变量的概念 程序执行过程中其值不能发生改变的量叫做常量,其值能发生改变的量叫做变量.常量可以直接使用,而变量则必须先定义后才能使用,否则编译器会报错. 2.常量和变量的命名规范 在介绍常量和 ...

  10. [转]google gflags 库完全使用

    简单介绍 gflags 是 google 开源的用于处理命令行参数的项目. 安装编译 项目主页:gflags ➜ ~ git clone https://github.com/gflags/gflag ...