欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django的后台管理

程序员文章站 2024-01-12 16:34:34
...

一直在简书记录自己的学习过程,这几天简书抽风,让重复绑定,否则发不了文章,折腾了半天也没有搞定,果断迁移支csdn这个技术性比较强的平台来记录。也没发全部迁移了,就接着简书的继续写吧!

今天到了Django的后台管理页面,与后台交互的模块是在应用中modles.py文件中来创建,然后迁移数据,形成数据库的数据,是不是很爽,我们不用在数据库里创建我们的数据表,只需要在模板后创建,然后迁移,django就会自动为我们在数据库中创建所有的数据,好了,大体说到这,首先来看一下整个项目的目录结构:

Django的后台管理

然后再来看下models.py文件的代码段: 

 

from django.db import models

# Create your models here.
#会义签到表
class even(models.Model):

    name = models.CharField(max_length=100)
    limit = models.IntegerField()
    status = models.BooleanField()
    addr = models.CharField(max_length=200)
    start_time = models.DateTimeField("even time")
    create_time = models.DateTimeField(auto_now=True)
    #定义这个方法,返回的 对象以什么样的形式式展示
    def __str__(self):
        return self.name

 #用户信息表
class guest(models.Model):
    even = models.ForeignKey(even)
    realname = models.CharField(max_length=20)
    phone = models.CharField(max_length=16)
    email = models.EmailField()
    sign = models.BooleanField()
    create_time = models.DateTimeField(auto_now=True)
#meat是python的内部类,用于定义一些模型的行为特性
class Meat():
    unqiue_together = ("even","phone")

def __str__(self):
    return self.realname

创建迁移文件:

python manage.py makemigrations sign

迁移文件:

python manage.py migrate

在admin.py文件中注册这两个表:

from django.contrib import admin
from .models import even,guest
# Register your models here.
class evenAdmin(admin.ModelAdmin):
    list_display = ["id","name","status","addr","start_time"]
    search_fields = ["name"]#添加搜索栏
    list_filter = ["status"]#过滤器
class guestAdmin(admin.ModelAdmin):
    list_display = ["realname","phone","email","sign","create_time","even"]
    list_filter = ["sign"]#过滤哭
    search_fields = ["phone","realname"]#搜索栏
admin.site.reg

Django的后台管理

 数据的基本访问:

数据的访问我们可以用pyhotn连接数据库执行查询语句来查询,那又是另外一个知识要点,今天我们就来说一下,在shell命令下简单查询数据,进入shell的命令是:

```

(pyweb) aaa@qq.com:~/Desktop/projects/fan$ python manage.py shell
Python 3.5.2 (default, Jul  5 2016, 12:43:10) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 

```

导入模块并查询两个活动的所有数据,因为在guest下我们没有添加活动,所以返回一个空列表:

>>> from sign.models import even ,guest
>>> even.objects.all()
[<even: 小米发布会 >, <even: 华为手机 >]
>>> guest.objects.all()
[]

插入数据保存,数据的字段要跟我们创建表时的字段一致,如何表中插入数据,请参考相关数据库操作知识:

>>> el = even(id=3,name="老师节见面会",limit=500,status="True",addr="北京",start_time=datetime(2018,9,22,18,0,0))
>>> el.save()

数据插入成功:

>>> even.objects.all()
[<even: 小米发布会 >, <even: 华为手机 >, <even: 老师节见面会>]

查询数据:

>>> el =even.objects.get(name="老师见面会")
>>> el
<even: 老师节见面会>
>>> el.status
'True'
>>> el.addr
'北京'
>>> el.name
'老师节见面会'

模糊查询:

>>> el = even.objects.filter(name__contains="发布会")
>>> el
[<even: 小米发布会 >]

注意:

name__contains是双下划线

删除数据:

>>> el.delete()
>>> el
[]
>>> even.objects.all()
[<even: 华为手机 >, <even: 老师节见面会>]