对于想了解Gorm创建HasOne关系的读者,本文将提供新的信息,我们将详细介绍gorm创建数据库,并且为您提供关于Dijango学习_01_pycharm创建应用、Django解答01(pychar
对于想了解Gorm创建HasOne关系的读者,本文将提供新的信息,我们将详细介绍gorm创建数据库,并且为您提供关于Dijango学习_01_pycharm创建应用、Django 解答 01 (pycharm创建项目)、Django基础,Day1 - 环境安装与pycharm创建django项目、django操作非ORM创建的表的有价值信息。
本文目录一览:- Gorm创建HasOne关系(gorm创建数据库)
- Dijango学习_01_pycharm创建应用
- Django 解答 01 (pycharm创建项目)
- Django基础,Day1 - 环境安装与pycharm创建django项目
- django操作非ORM创建的表
Gorm创建HasOne关系(gorm创建数据库)
如何解决Gorm创建HasOne关系?
我对Gorm HasOne关系有疑问。我有两个桌子,像这样:
type VM struct {
ID string
Name string
Type string
Ctf int16
Rfu int32
Storage int32
Amount int32
Status string
Address string
IPA IPA `gorm:"foreignkey:Address;references:address"`
}
type IPA struct {
Address string `gorm:"primaryKey"`
}
问题在于,当使用AutoMigrate
时,没有创建此关系。我认为是因为VM.address
字段被创建为longtext
,而IPA.address
字段被创建为varchar(191)
。实际上,MysqL会给出错误(errno: 150 "Foreign key constraint is incorrectly formed")
。
我尝试在gorm:"type:varchar(191)"
中指定VM.Address
,但是仍将字段创建为longtext
,我并不认为这是正确的方法。实际上,我在gorm 1.20.1
上。
我想念什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Dijango学习_01_pycharm创建应用
一。当初在学dijango的时候,网上的教程非常的杂且多,对于؏؏☝ᖗ乛◡乛ᖘ☝؏؏我们这种初入虎门的小白来说有太多误区
(其实是大佬的操作着实对小白不太友好,原谅我个萌新。。2333。。)
二。pip install dijango直装。。。。需要对应版本号后面带上== XXX版本号
左上角创建dijango项目 , 1.路径 2.虚拟环境 (反正我是直装,管他三七二十一,emmm....)
这里可以看到我们有了四个文件(文件夹有点其他东西,有点乱,随意,随意)
manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py ----- 负责把URL模式映射到应用程序。
我们再来创建一个应用app(我也不知道为啥要叫app,在本小白看来app就是手机软件,,,,
在pycharm的控制台创建,下面圈起来的就是,当初看文章的时候找了半天一直以为是再cmd中打开到文件所在位置再创建,
事实证明我太年轻。。。。
python manage.py startapp xxx
xxx是你创建app的名字
好的名字就叫app,其次在settings.py文件内的INSTALLED_APPS中添加创建的app名称,将LANGUAGE_CODE中的内容改为zh-hans,即设置中文。
之后再写dijango连接MySQL数据库的操作(文章短小精悍,绝对管用!!!)
Django 解答 01 (pycharm创建项目)
pycharm创建项目
1、
2、
3、Tools --->Deployment--->Options 这一条由always 改为 On explicit save action(Ctrl+S)
4、settings第28行,添加 * 号
5、Edit Configurations ----->添加上ip:0.0.0.0
6、Tools ---- >run manager.py Task 可以直接使用编辑器
7、配置数据库的连接,settings.py的DATABASES
8、pymusql作为连接器,init.py里面添加两行代码
Django基础,Day1 - 环境安装与pycharm创建django项目
Django是一个高级Python Web框架,支持快速部署,清理和实用的设计。它可以被轻易部署和提供实用的组件,而开发人员只需要专注于写自己的应用程序,而不需要重复造轮子。并且Django是自由和开源的。
安装Django
$ pip install django
Collecting django
Downloading Django-1.10.5-py2.py3-none-any.whl (6.8MB) 100% |████████████████████████████████| 6.8MB 7.4kB/s Installing collected packages: django Successfully installed django-1.10.5
检查Django版本
$ python -m django --version
1.10.5
创建Django Project
使用Pycharm创建
创建项目后,目录结构如:
urls.py:网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
运行Django Project
如果想让局域网内其他机器通过IP访问,则需要在全局设置setting中设置 ALLOWED_HOSTS = [''192.168.1.101''],否则:
创建Django App
一个project包含很多个Django app以及对它们的配置。技术上,project的作用是提供配置文件,比方说哪里定义数据库连接信息, 安装的app列表, TEMPLATE_DIRS ,等等。一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在。
创建app polls:
执行命令后,在项目结构中,可见新增了目录polls
django操作非ORM创建的表
问题:django的ORM怎么连接已存在的表,然后进行增删查改操作?
工作中会遇见很多二次开发的时候,表都是已经创建好的,用django的ORM进行二次开发,怎么操作数据库中的表呢?
下面介绍一种完美解决方案:
现有一张表,表名为tencent_depth,表结构如下:
mysql> desc tencent_depth;
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| Positionname | varchar(100) | NO | | NULL | |
| Workingplace | char(20) | YES | | NULL | |
| Positioncategory | char(20) | YES | | NULL | |
| Peoplenumber | char(10) | YES | | NULL | |
| Operatingduty | text | YES | | NULL | |
| Jobrequirements | text | YES | | NULL | |
+------------------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
表里面有很多数据,用scrapy爬取的腾讯招聘信息,一共3827条记录
怎么通过django的ORM操作(增删改查),让数据可视化?(这里只写models.py相关配置)
方案如下:
修改models.py文件
class tencent_depth(models.Model):
id = models.AutoField(primary_key=True)
Positionname = models.CharField(max_length=100)
Workingplace = models.CharField(max_length=20)
Positioncategory = models.CharField(max_length=20)
Peoplenumber = models.CharField(max_length=10)
Operatingduty = models.TextField(max_length=1000)
Jobrequirements = models.TextField(max_length=1000)
class Meta: # 必须要写这个类
db_table = ''tencent_depth'' # 指定表名
删除migrations目录下生成的文件,然后执行这个命令就行
python manage.py makemigrations
查询成功
添加一个字段,插入一条记录,并获取值显示出来(主要看看增删改查有问题没)
修改models.py文件
from django.db import models
class tencent_depth(models.Model):
id = models.AutoField(primary_key=True)
Positionname = models.CharField(max_length=100)
Workingplace = models.CharField(max_length=20)
Positioncategory = models.CharField(max_length=20)
Peoplenumber = models.CharField(max_length=10)
Operatingduty = models.TextField(max_length=1000)
Jobrequirements = models.TextField(max_length=1000)
# 添加一个时间字段
create_time = models.DateTimeField(null=True)
class Meta:
db_table = ''tencent_depth''
修改view.py视图函数
from django.shortcuts import render,HttpResponse,redirect
# Create your views here.
from app import models
import datetime
def index(request):
data = datetime.datetime.now()
data = data.strftime("%Y-%m-%d %H:%I:%S") # 获取本地格式化时间
# 添加一条测试记录
ret = models.tencent_depth.objects.create(Positionname=''本地测试(运维开发)'',
Workingplace=''本地测试(上海)'',
Positioncategory=''本地测试(技术)'',
Peoplenumber=''本地测试(1人)'',
Operatingduty=''本地测试(无)'',
Jobrequirements=''本地测试(无)'',
create_time=data,
)
return render(request, ''index.html'', {''ret'': ret})
修改templates里面的index.html
{% extends ''base.html'' %}
{% block content %}
<div class="jumbotron">
<p>{{ ret.Positionname }}</p>
<p>{{ ret.Workingplace }}</p>
<p>{{ ret.Positioncategory }}</p>
<p>{{ ret.Operatingduty }}</p>
<p>{{ ret.Jobrequirements }}</p>
<p>{{ ret.create_time}}</p> # 这里传过来的时间已经是格式化时间,所以不需要用date过滤器了
<p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
</div>
{% endblock %}
{{% block title %}
<title>Index</title>
{% endblock %}}
然后执行
python manage.py makemigrations
python manager.py migrate
关于Gorm创建HasOne关系和gorm创建数据库的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Dijango学习_01_pycharm创建应用、Django 解答 01 (pycharm创建项目)、Django基础,Day1 - 环境安装与pycharm创建django项目、django操作非ORM创建的表的相关知识,请在本站寻找。
本文标签: