GVKun编程网logo

Gorm创建HasOne关系(gorm创建数据库)

25

对于想了解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创建数据库)

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学习_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创建项目)

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基础,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怎么连接已存在的表,然后进行增删查改操作?

    工作中会遇见很多二次开发的时候,表都是已经创建好的,用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创建的表的相关知识,请在本站寻找。

本文标签: