1、创建项目和app
2、配置settings.py文件
3、创建路由
4、编写models.py
ORM数据库的一对一关系:一个表中的一条数据对应着另外一个表中的一条数据。
例如:一个账号只能对应一个联系人,一个联系人只能有一个账户。身份证。
from django.db import models
# ORM数据库的一对一关系:一个表中的一条数据对应着另外一个表中的一条数据。
# 例如:一个账号只能对应一个联系人,一个联系人只能有一个账户。身份证。
class Account(models.Model):
'''
一个账户类
'''
# 账户名称
a_name = models.CharField(max_length=20)
# 账户密码
a_password = models.CharField(max_length=100)
# 账户激活的时间
# DateField()参数为空,这个字段的值需要自己添加。
# auto_now=True:当Account这个对象的属性被修改了,在保存的时候,a_register_date这个时间会自动更新为保存时间。(强调更新时间)
# auto_now_add=True:含义就是这个时间字段,不会随着对象的修改而更新这个时间。只在这个对象被第一次创建的时候自动填充创建的时间。以后也不会在变动了。(强调创建时间)
a_register_date = models.DateTimeField(auto_now_add=True)
a_update_date = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'account'
class Contact(models.Model):
'''
一个账户的拥有人。
'''
# 账户拥有人的姓名
c_name = models.CharField(max_length=20)
# 账户拥有人的地址
c_address = models.TextField()
# 账户拥有人的联系方式
c_phone = models.CharField(max_length=20)
# 添加账户和所有人的一对一关系
# 当account表中的一条数据删除时,对应的contact表中的数据也要删除。
account = models.OneToOneField(Account,on_delete=models.CASCADE)
class Meta:
db_table='contact'
# 将OneToOne设置在哪一个表中,哪一个表就是从表。
# OneToOneField()的第一个参数就是主表。
# OneToOneField不强调位置关系。两个表中任选一个作为主表,另一个作为从表。
# 一对多,一必须是主表,多是从表,强调位置关系。
5、在templates文件夹下新建index.html
6、编写views.py
(1)添加
(2)修改
(3)删除
(4)查询
from django.shortcuts import render
from .models import Account, Contact
from datetime import datetime
def add(request):
# 添加主表示数据
a1=Account(a_name='1@qq.com',a_password='123456',a_register_date=datetime.now(),a_update_date=datetime.now())
a1.save()
a2=Account(a_name='2@163.com',a_password='456789',a_register_date=datetime.now(),a_update_date=datetime.now())
a2.save()
# 添加从表数据
c1=Contact(c_name='俊狗',c_address='贵州',c_phone='110',account=a1)
c1.save()
c2=Contact(c_name='坤狗',c_address='郑州',c_phone='119',account_id=a2.id)
c2.save()
return render(request,'index.html',{'result':'数据添加成功'})
def select(request):
# 根据主表的一条数据,查询从表的一条数据。也就是查询该账户的拥有人。
account=Account.objects.get(id=2)
contact=account.contact.c_name
return render(request, 'index.html', {'result':contact})
# # 根据从表的一条数据,查询主表的一条数据,也就是查询这个人的账户。
# contact=Contact.objects.get(id=2)
# account=contact.account.a_name
# return render(request, 'index.html', {'result': account})
def update(request):
account=Account.objects.get(id=1)
account.a_password='147258'
account.save()
return render(request, 'index.html', {'result': '数据修改成功'})
def delete(request):
Account.objects.get(id=1).delete()
return render(request, 'index.html', {'result': '数据删除成功'})