django自动创建model数据

目前使用的环境:django4.2.3,python3.10

django通过一些第三方库,可以轻易的自动生成一系列的后台数据。

首先先创建一个数据库:

然后,在setting.py中就可以指定我们新创建的数据库了。

DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2','NAME': 'machine_database_test','USER': 'root','PASSWORD': '123456',# The database server actually runs on the statusweb machine and# requires local authentication. This will work for both PAO and W2,# so this will save the settings_local.py need on W2.'HOST': '127.0.0.1',}
}

 然后,需要执行数据迁移命令:

python manage.py makemigrations
python manage.py migrate

最好在虚拟环境中执行这些内容,会比较方便:

然后,顺便创建一个超级用户:

python manage.py createsuperuser

 然后,看看需要下载的第三方包:

pip install model_bakery

然后创建一个脚本,一般情况,都会放到一个app文件夹下。

脚本的名称,也不重要,我这里叫 baker_recipes.py,文件内容如下:

import os
import django
from model_bakery import bakeros.environ.setdefault("DJANGO_SETTINGS_MODULE", "machine_database.settings")
django.setup()customers = baker.make('machines.Repository', _quantity=3)

这里有几个点需要注意:

第一,DJANGO_SETTINGS_MODULE 这个变量必须设置,否则运行的时候会报错,就像这样:

第二,django.setup() 一定要执行,否则设置不生效。

第三,baker.make()里面的第一个参数,其实就是给定的model表的名称,这里其实有两种写法

import os
import django
from model_bakery import baker
from machines.models import Repositoryos.environ.setdefault("DJANGO_SETTINGS_MODULE", "machine_database.settings")
django.setup()customers = baker.make('Repository', _quantity=3)

官网上是这么介绍的.....

但是,我这么做了,然后就反复的报错....

所以,最好不要这么干,就按照我上面的第一种写法,可以不导入model,直接以 app_name.model_name的方式直接用就好。

第四,baker.make() 中的 _quantity 参数的意思是,创建几个随机数据。

然后,之所写这篇帖子是因为,感觉这玩意儿,真挺6的....

先看看我的models.py:

class Ethernet(models.Model):interface = models.CharField(max_length=32)class Meta:verbose_name_plural = 'Ethernet Interfaces'verbose_name = 'Ethernet Interface'class Machine(models.Model):hostname = models.CharField(max_length=255, unique=True)ethernets = models.ManyToManyField(Ethernet, related_name='machine')def __str__(self):return "%s" % self.hostnameclass Meta:verbose_name_plural = 'machines'ordering = ['id']class Repository(models.Model):description = models.TextField()machine = models.ForeignKey(Machine, on_delete=models.CASCADE)ethernet = models.ForeignKey(Ethernet, on_delete=models.CASCADE)

 然后就能发现,Repository 这张表,跟两外两张表都有联系。所以,我只需要在 baker.make()中指定 Repository 这张表就可以了,由于它们之间的关联原因,baker会直接生成3张表的相关数据的。

执行上面的脚本就可以了,也很简单...

python  baker_recipes.py

这里注意,执行一遍就好....否则你执行2遍就是创建 6 组数据....

看看结果:

可以吧,确实都造出来了....只是,随机数....比较长....稍微看起来,有点费劲....

当然,造随机数据的时候,也可以不全部随机,可以选择一些字段随机....

我就浅尝辄止....记录一下...更多的东西,官网有,感兴趣的小伙伴可以自己看看....

官网链接:Basic Usage — Model Bakery 1.14.0 documentation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/81600.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink流批一体计算(16):PyFlink DataStream API

目录 概述 Pipeline Dataflow 代码示例WorldCount.py 执行脚本WorldCount.py 概述 Apache Flink 提供了 DataStream API,用于构建健壮的、有状态的流式应用程序。它提供了对状态和时间细粒度控制,从而允许实现高级事件驱动系统。 用户实现的Flink程…

【boost网络库从青铜到王者】第六篇:asio网络编程中的socket异步读(接收)写(发送)

文章目录 1、简介2、异步写 void AsyncWriteSomeToSocketErr(const std::string& buffer)3、异步写void AsyncWriteSomeToSocket(const std::string& buffer)4、异步写void AsyncSendToSocket(const std::string& buffer)5、异步读void AsyncReadSomeToSocket(cons…

Linux_4_文本处理工具和正则表达式

目录 1文本编辑工具之神VIM1.1 vi和vim简介1.2使用vim1.2.1 vim 命令格式1.2.2三种主要模式和转换 1.3扩展命令模式1.3.1扩展命令模式基本命令1.3.2 地址定界1.3.3查找并替换1.3.4定制vim的工作特性1.3.4.1行号1.3.4.2忽略字符的大小写1.3.4.3白动缩进1.3.4.4复制粘贴保留格式1…

目标检测笔记(十一):如何在特定区域进行人脸检测实操

文章目录 背景代码 背景 由于我们在做项目的时候可能会涉及到某个指定区域进行目标检测或者人脸识别等任务,所以这篇博客是为了探究如何在传统目标检测的基础上来结合特定区域进行检测,以Opencv自带的包为例。 代码 import cv2face_cascade cv2.Casc…

鸡肋的RDP反制

更新时间:2023年07月19日09:18:29 为什么叫鸡肋: 鸡肋者,食之无肉,弃之有味。 你说不能成吧,但是有成功案例,你说成了吧,要求太高,还要看运气的。 一句话:对方需要开启…

Maven详解

文章目录 一、引言1.1 为什么需要 Maven?1.2 Maven 解决了哪些问题?1.2.1 添加第三方jar包1.2.2 jar包之间的依赖关系1.2.3 处理jar包之间的冲突1.2.4 获取第三方jar包1.2.5 将项目拆分成多个工程模块1.2.6 实现项目的分布式部署 二、介绍三、Maven 的特…

【java安全】JNDI注入概述

文章目录 【java安全】JNDI注入概述什么是JNDI?JDNI的结构InitialContext - 上下文Reference - 引用 JNDI注入JNDI & RMI利用版本:JNDI注入使用Reference 【java安全】JNDI注入概述 什么是JNDI? JNDI(Java Naming and Directory Interf…

图数据库Neo4j学习五渲染图数据库neo4jd3

文章目录 1.现成的工具2.Neo4j JavaScript Driver3.neovis4.neo4jd34.1neo4jd3和neovis对比4.2获取neo4jd34.3neo4jd3的数据结构4.4Spring data neo4.4.1 定义返回数据格式4.4.1.1NeoResults4.4.1.2GraphVO4.4.1.3NodeVO4.4.1.4ShipVO 4.4.2 SDN查询解析4.4.2.1 Repo查询语句4.…

element-ui中的el-table合并单元格

描述: 在写项目的时候有时候会经常遇到把行和列合并起来的情况,因为有些数据是重复渲染的,不合并行列会使表格看起来非常的混乱,如下: 而我们想要的数据是下面这种情况,将重复的行进行合并,使表…

stm32串口通信(PC--stm32;中断接收方式;附proteus电路图;开发方式:cubeMX)

单片机型号STM32F103R6: 最后实现的效果是,开机后PC内要求输入1或0,输入1则打开灯泡,输入0则关闭灯泡,输入其他内容则显示错误,值得注意的是这个模拟的东西只能输入英文 之所以用2个LED灯是因为LED电阻粗略一算就是1…

【考研数学】矩阵、向量与线性方程组解的关系梳理与讨论

文章目录 引言一、回顾二、梳理齐次线性方程组非齐次线性方程组 写在最后 引言 两个原因让我想写这篇文章,一是做矩阵题目的时候就发现这三货经常绑在一起,让人想去探寻其中奥秘;另一就是今天学了向量组的秩,让我想起来了之前遗留…

Linux后门大全-xinetd后门(二)

环境 靶机:centos7.6 攻击机:Linux 使用docker搭建靶机环境,当然也可以不使用docker,直接跳过创建容器的步骤即可 创建容器 #创建名为backdoorT4的特权容器,并使用/usr/sbin/init,因为容器默认不开启sy…