电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Django如何批量創建Model

瀏覽:167日期:2024-09-22 18:18:34

1.前言:

將測試數據全部敲入數據庫非常繁瑣,而且如果與合作伙伴一起開發,部署,那么他們肯定也不想把時間花在一個一個錄入數據的繁瑣過程中,這時候,創建一個批量錄入數據的腳本(population script)就非常有必要。

2.代碼:

假設在models.py中定義的數據為下面:

from django.db import models # Create your models here.class Category(models.Model): name=models.CharField(max_length=128,unique=True) class Meta: verbose_name_plural='Categories' def __str__(self): return self.name class Page(models.Model): category=models.ForeignKey(Category,on_delete=models.CASCADE) title=models.CharField(max_length=128) url=models.URLField() views=models.IntegerField(default=0) def __str__(self): return self.title

populate.py如下(僅供參考):

import os# In your live server environment, you’ll need to tell your WSGI application what settings# file to use. Do that with os.environ:#reference source:https://docs.djangoproject.com/en/3.1/topics/settings/os.environ.setdefault(’DJANGO_SETTINGS_MODULE’,’tango_with_django_project.settings’) import djangodjango.setup()from rango.models import Category,Page#If you’re using components of Django “standalone” ? for example, writing a Python script# which loads some Django templates and renders them, or uses the ORM to fetch some data ?# there’s one more step you’ll need in addition to configuring settings.# After you’ve either set DJANGO_SETTINGS_MODULE or called configure(), you’ll need to call# django.setup() to load your settings and populate Django’s application registry.# reference source:https://docs.djangoproject.com/en/3.1/topics/settings/def populate(): python_pages=[ {'title':'official', 'url':'http://docs.python.org'}, {'title':'How to think like a computer scientis', 'url':'http://ww.greenteapress.com/thinkpy'}, {'title':'learn python in 10 minites', 'url':'http://www.korokithakis.net/tutorials/python'} ] django_pages=[ {'title':'Official Django tutorial', 'url':'https://docs.jangoproject.com/en/1.9/intro'}, {'title':'Django Rocks', 'url':'http://www.djangorocks.com' }, {'title':'HOw to tango with django', 'url':'http://www.tangowithdjango.com'} ] other_pages=[ {'title':'Bottle', 'url':'http://bottlepy.org'}, {'title':'Flask', 'url':'http://flask.pocoo.org'}, {'title':'Bold test', 'url':'http://boldtest.org'} ] cats={'Python':{'pages':python_pages}, 'Django':{'pages':django_pages}, 'Other Frameworks':{'pages':other_pages}} def add_page(cat,title,url,views=0): p=Page.objects.get_or_create(category=cat,title=title,url=url,views=views)[0] # p.url=url # p.views=views p.save() return p def add_cat(name): c=Category.objects.get_or_create(name=name)[0] c.save() return c for cat,cat_data in cats.items(): c=add_cat(cat) for p in cat_data[’pages’]: add_page(c,p['title'],p[’url’]) for c in Category.objects.all(): for p in Page.objects.filter(category=c): print('-{0}-{1}'.format(str(c),str(p))) if __name__=='__main__': print('starting rango population script') populate()

 3.代碼要點

(1)在獨立運行django的代碼時,而不是通過 python manage.py runserver的方式運行時,必須使用django.setup()來引入Django項目的設置,而在引入設置之前還要指明 環境變量DJANGO_SETTINGS_MODULE用的是本項目的settings。

設置環境變量在python中常用os.environ,它返回一個字典類型,里面包含了所有環境變量的鍵值對,所以在這里使用字典的內置方法setdefault,將環境變量

’DJANGO_SETTINGS_MODULE’ 設置為’tango_with_django_project.settings’(本項目的settings.py)。<br>參考:<a rel='external nofollow' >https://docs.djangoproject.com/en/3.1/topics/settings/#envvar-DJANGO_SETTINGS_MODULE</a>

(2)get_or_create方法:(官方文檔定義https://docs.djangoproject.com/en/3.1/ref/models/querysets/#get-or-create如下)

get_or_create(defaults=None, **kwargs)A convenience method for looking up an object with the given kwargs (may be empty if your model has defaults for all fields),<br> creating one if necessary.Returns a tuple of (object, created), where object is the retrieved or created object and created is a boolean specifying whether a new <br>object was created.This is meant to prevent duplicate objects from being created when requests are made in parallel, and as a shortcut to boilerplatish code. <br>

 在這里,需要注意的是,如果在創建model instance時,僅在model有默認值的情況下可以不輸入任何kwargs,否則必須至少輸入一個值(field,如這里page的category,或者Category的name),然后該方法會帶著這個值先去找有沒有該值下的model instance,如果沒有則創建一個新的,返回(object,created),這里object 是新創建的對象的reference,created為True.

4.運行查看

運行python populate.py:

Django如何批量創建Model

然后登陸admin頁面查看:

Django如何批量創建Model

可以看到,數據全部被讀入數據庫。

以上就是Django如何批量創建Model的詳細內容,更多關于Django批量創建Model的資料請關注好吧啦網其它相關文章!

標簽: Django
相關文章:
主站蜘蛛池模板: 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 江苏大隆凯科技有限公司| 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 免费网站网址收录网_海企优网站推荐平台 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 皮带机-带式输送机价格-固定式胶带机生产厂家-河南坤威机械 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 智能交通网_智能交通系统_ITS_交通监控_卫星导航_智能交通行业 | 青州开防盗门锁-配汽车芯片钥匙-保险箱钥匙-吉祥修锁店 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | cnc精密加工_数控机械加工_非标平键定制生产厂家_扬州沃佳机械有限公司 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 衬氟旋塞阀-卡套旋塞阀-中升阀门首页 | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 申江储气罐厂家,储气罐批发价格,储气罐规格-上海申江压力容器有限公司(厂) | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 滁州高低温冲击试验箱厂家_安徽高低温试验箱价格|安徽希尔伯特 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 棕刚玉_白刚玉_铝酸钙-锐石新材料 | 上海乾拓贸易有限公司-日本SMC电磁阀_德国FESTO电磁阀_德国FESTO气缸 | 非小号行情 - 专业的区块链、数字藏品行情APP、金色财经官网 | 变频器维修公司_plc维修_伺服驱动器维修_工控机维修 - 夫唯科技 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 阳光1号桔柚_无核沃柑_柑橘新品种枝条苗木批发 - 苧金网 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家 | 包装机_厂家_价格-山东包装机有限公司 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 |