django自动创建model数据

news2025/1/25 4:32:08

目前使用的环境: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 baker


os.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 Repository

os.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.hostname

    class 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.coloradmin.cn/o/924371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Pytorch的神经网络部分自定义设计

一、基础概念(学习笔记) (1)训练误差和泛化误差[1] 本质上,优化和深度学习的目标是根本不同的。前者主要关注的是最小化目标,后者则关注在给定有限数据量的情况下寻找合适的模型。训练误差和泛化误差通常不…

【前端】深入解析CSS:选择器、显示模式、背景属性和特征剖析

目录 一、前言二、CSS的复合选择器1、后代选择器①、语法②、注意事项 2、子选择器①、语法②、注意事项 3、并集选择器①、语法②、注意事项 4、链接伪类选择器①、语法②、注意事项 三、CSS元素显示模式转换1、转换为块元素display:block2、转换为行内元素display:inline3、转…

AIGC ChatGPT 制作地图可视化分析

地图可视化分析是一种将数据通过地图的形式进行展示的方法,可以让人们更加直观、快速、准确的理解和分析数据。以下是地图可视化分析的一些主要好处: 加强数据理解:地图可视化可以将抽象的数字转化为直观的图形,帮助我们更好地理解…

LLMs对单个任务进行微调Fine-tuning on a single task

虽然LLM因其在单一模型内执行多种不同语言任务的能力而变得出名,但您的应用程序可能只需要执行单一任务。在这种情况下,您可以微调一个预训练的模型,以仅提高您感兴趣的任务的性能。例如,使用该任务的示例数据集进行摘要。有趣的是…

Linux —— keepalived

简介 Keepalived 是一个用 C 语言编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础设施提供简单而强大的负载均衡和高可用性功能。 Keepalived 开源并且免费的软件。 Keepalived 的2大核心功能 1. loadbalance 负载均衡 LB:ipvs--》lvs软件…

第三届计算机、物联网与控制工程国际学术会议(CITCE 2023)

第三届计算机、物联网与控制工程国际学术会议(CITCE 2023) The 3rd International Conference on Computer, Internet of Things and Control Engineering(CITCE 2023) 第三届计算机、物联网与控制工程国际学术会议(CITCE 2023)…

运用亚马逊云科技Amazon Kendra,快速部署企业智能搜索应用

亚马逊云科技Amazon Kendra是一项由机器学习(ML)提供支持的企业搜索服务。Kendra内置数据源连接器,支持快速访问Amazon S3、AmazonRDS、AmazonFSX以及其他外部数据源,帮助用户自动提取文档并建立索引。Kendra支持超过30多种多国语…

线性代数的学习和整理7:各种特殊效果矩阵汇总

目录 1 矩阵 1.1 1维的矩阵 1.2 2维的矩阵 1.3 没有3维的矩阵---3维的是3阶张量 1.4 下面本文总结的都是各种特殊效果矩阵特例 2 方阵: 正方形矩阵 3 单位矩阵 3.1 单位矩阵的定义 3.2 单位矩阵的特性 3.3 为什么单位矩阵I是 [1,0;0,1] 而不是[0,1;1,0] 或[1,1;1,1]…

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

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

React Antd form.getFieldsValue() 和 form.getFieldsValue(true) 有区别吗?

背景 突然发现 antd 的 getFieldsValue()是可以传一个 true 参数的,如题,React Antd form.getFieldsValue() 和 form.getFieldsValue(true) 有区别吗? 验证 确实不一样 结论 getFieldsValue 提供了多种重载方法: getFieldsValue(name…

Leetcode每日一题:1267. 统计参与通信的服务器(2023.8.24 C++)

目录 1267. 统计参与通信的服务器 题目描述: 实现代码与解析: 写法一:两次遍历 hash 原理思路: 写法二:三次遍历 原理思路: 1267. 统计参与通信的服务器 题目描述: 这里有一幅服务器分…

SpringIoC三层架构实战

目录 一、需求分析 二、创建相关数据库 三、导入相关依赖 四、实体类准备 五、相关技术讲解(Druid、JDBCTemplate) 六、三层架构实现案例 一、需求分析 搭建一个三层架构案例,模拟查询全部学生(学生表)信息&#x…

美团发布2023年Q2财报:营收680亿元,同比增长33.4%

8月24日,美团(股票代码:3690.HK)发布2023年第二季度及半年业绩报告。今年二季度,美团实现营收680亿元(人民币,下同),同比增长33.4%。 财报显示,二季度,美团继续深入推进“零售科技”战略,持续加…

leetcode:2011. 执行操作后的变量值(python3解法)

难度:简单 存在一种仅支持 4 种操作和 1 个变量 X 的编程语言: X 和 X 使变量 X 的值 加 1--X 和 X-- 使变量 X 的值 减 1 最初,X 的值是 0 给你一个字符串数组 operations ,这是由操作组成的一个列表,返回执行所有操作…

算法与数据结构(十)--图的入门

一.图的定义和分类 定义:图是由一组顶点和一组能够将两个顶点连接的边组成的。 特殊的图: 1.自环:即一条连接一个顶点和其自身的边; 2.平行边:连接同一对顶点的两条边; 图的分类: 按照连接两个顶点的边的…

Flask 单元测试

如果一个软件项目没有经过测试,就像做的菜里没加盐一样。Flask 作为一个 Web 软件项目,如何做单元测试呢,今天我们来了解下,基于 unittest 的 Flask 项目的单元测试。 什么是单元测试 单元测试是软件测试的一种类型。顾名思义&a…

idea使用tomcat

1. 建立javaweb项目 2. /WEB-INF/web.xml项目配置文件 如果javaweb项目 先建立项目,然后在项目上添加框架支持,选择javaee 3. 项目结构 4.执行测试:

按软件开发阶段的角度划分:单元测试、集成测试、系统测试、验收测试

1.单元测试(Unit Testing) 单元测试,又称模块测试。对软件的组成单位进行测试,其目的是检验软件基本组成单位的正确性。测试的对象是软件里测试的最小单位:模块。 测试阶段:编码后或者编码前(…

服务器(容器)开发指南——code-server

文章目录 code-server简介code-server的安装与使用code-server的安装code-server的启动code-server的简单启动指定配置启动code-server code-server环境变量配置 code-server端口转发自动端口转发手动添加转发端口 nginx反向代理code-servercode-server打包开发版镜像 GitHub官…

Qt --- QTimer

在Qt开发界面的时候,非常多的时候都得使用定时器,定时器具体可以干什么呢?比如:控制时钟、定时改变样式、改变进度等。。。说到这里,经常使用QQ,而不同的时段都会显示不同的背景,我认为如果用Qt…