一直在简书记录自己的学习过程,这几天简书抽风,让重复绑定,否则发不了文章,折腾了半天也没有搞定,果断迁移支csdn这个技术性比较强的平台来记录。也没发全部迁移了,就接着简书的继续写吧!
今天到了Django的后台管理页面,与后台交互的模块是在应用中modles.py文件中来创建,然后迁移数据,形成数据库的数据,是不是很爽,我们不用在数据库里创建我们的数据表,只需要在模板后创建,然后迁移,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
数据的基本访问:
数据的访问我们可以用pyhotn连接数据库执行查询语句来查询,那又是另外一个知识要点,今天我们就来说一下,在shell命令下简单查询数据,进入shell的命令是:
```
(pyweb) python@ubuntu:~/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: 老师节见面会>]