前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django-模型之(ORM)对象关系映射(一)

django-模型之(ORM)对象关系映射(一)

作者头像
西西嘛呦
发布2020-08-26 10:47:01
5170
发布2020-08-26 10:47:01
举报

所谓对象关系映射,就是将数据库的一些名字与python中的一些名字相对应,表名-->类名,字段-->属性,操作(增删改查)-->方法。这样,我们就可以通过对Python代码的编辑来对数据库进行操作。

流程:创建models,通过models创建迁移文件(makemigrations),通过迁移文件映射到数据库中。

book/models.py

代码语言:javascript
复制
from django.db import models

# Create your models here.
class Student(models.Model):
    #字段映射,数据库中是male,female,后台显示的是男,女
    choices={
        ('male',"男"),
        ('female','女'),
    }
    #创建数据库中的字段
    name=models.CharField(verbose_name='姓名',max_length=20,unique=True)
    age=models.CharField(verbose_name='年龄',max_length=10)
    gender=models.CharField(verbose_name='性别',max_length=10,choices=choices,default='male')
    is_deleted=models.BooleanField(default=False)
    introduce=models.TextField()

    def __str__(self):
        return self.name

    class Meta:
        # verbose_name_plural='新闻'
        # verbose_name="新闻列表"
        #修改排列的顺序,这句是靠id从大到小排序
        ordering=['-id']
        db_table = 'student'

book/admin.py

代码语言:javascript
复制
from django.contrib import admin
from .models import Student

# Register your models here.

#在后台显示相关信息
class StudentAdmin(admin.ModelAdmin):
    list_display = ['id','name','age','gender','is_deleted','introduce']

#将模型进行注册
admin.site.register(Student,StudentAdmin)

有了这两个,输入:

python manage.py makemigrations

python manage.py migrate

会在migrations下生成一个文件:

具体内容如下:

代码语言:javascript
复制
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('book', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='Student',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=20, unique=True, verbose_name='姓名')),
                ('age', models.CharField(max_length=10, verbose_name='年龄')),
                ('gender', models.CharField(choices=[('male', '男'), ('femal', '女')], max_length=10, verbose_name='性别')),
                ('is_deleted', models.BooleanField(default=False)),
                ('introduce', models.TextField()),
            ],
        ),
        migrations.DeleteModel(
            name='Articles',
        ),
    ]

我们要进入后台管理界面需要设置用户名和密码:

python manage.py createsuperuser

输入用户:admin 密码:12345678 邮箱可以不填

浏览器输入127.0.0.1:8000/admin,输入账号密码后进入到管理界面,

点击students,会有相应表的信息:

最后,我们将数据库里面的内容传到前台页面:

book/views.py

代码语言:javascript
复制
from .models import Student
from django.shortcuts import render
def index(request):
    student_list=Student.objects.all()
    context={
        'students':student_list,
    }
    return render(request,"index.html",context=context)

index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{title}}</title>
    <link rel="stylesheet" href={% static 'css/index.css' %}>
</head>
<body>
    {% include 'header.html'%}
    <div class="content">
        <h1>这是主界面</h1>
        {% for student in students %}
        {{student.id}}
        {{student.name}}
        {% endfor %}
        <!--{% block content %}-->
        <!--{% endblock %}-->
    </div>
    {% include 'footer.html'%}
</body>
</html>

最终效果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档