关于django models中的关系操作一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao_5352269/article/details/80797809

关于django models中的关系操作一

GOOD LUCKY 2018


Django 模型层对三种关系模型(1:1,1:N,M:N)都有强大的支持

    本次介绍三种关系模型中的一对一关系:


一对一模型

在sql语言中,一对一关系是通过在两个表之间定义相同的主键来完成。在Django模型层中,可以在任意一个模型中定义OneToOneField字段并定义相互之间的一对一关系

    from django.db import models


代码展示
# -*- coding: utf-8 -*-

from __future__ import unicode_literals
from django.db import models

# Create your models here.
# 一对一关系:数据库中两个表中数据的对应关系
# 一个账户对应着一个联系人,而一个联系人有一个账户
# 一对一关系是通过在两个表之间定义相同的主键来完成

class Account(models.Model): username = models.CharField(max_length=20, null=True,
blank=True, verbose_name=u'用户名') password = models.CharField(max_length=40, null=True,
blank=True, verbose_name=u'密码') register_date = models.DateField(auto_now_add=True, null=True,
blank=True, verbose_name=u'注册时间')
class Meta: db_table = 'Account'    
   # 该函数是负责展示该类对象的详细信息的函数,根据需要自定义展示的内容    
def __unicode__(self):
return 'Account:%s'%self.username
class Contact(models.Model):
# Contact中,关联Account表,让两个表的数据产生联系    
# 第一个参数:是被关联的模型名称    
# 第二个参数:当Account中的一条数据被删除的时候,与之对应的Contact数据也会被删除
account = models.OneToOneField(Account, on_delete=models.CASCADE, primary_key=True) address = models.CharField(max_length=100, null=True) code = models.CharField(max_length=20, null=True) mobile = models.CharField(max_length=20, null=True)
class Meta: db_table = 'Contact'    
def __unicode__(self):
# self.account:通过联系人对象反向查询该信息所属的人        
return 'Contact:%s-%s-%s'%(self.account.username,self.address,self.mobile)
#ORM:关系映射对象,把传统的SQL语句封装成了类和对象的形式,在操作表中的数据记录时,就像在操作类和对象

# 一对一的正向查询和反向查询a1 = Account(username='dawei',password='333') a1.save() c1 = Contact(account=a1,address='xinmi',code='450000',mobile='13212344321') c1.save()
print a1.contact
# 正向查询,通过账户查询该账户对应的详细信息

print c1.account

# 反向查询,通过详细信息查询信息对应的账户

# a1.contact.mobile

# a1.contact.address

# a1.contact.code

# c1.account.username# c1.account.password

# 删除账户,对应的联系人信息也会被删除

# a1.delete()


1、两个模型的关系通过Contact模型中的account字段进行定义
2、OneToOneField()的第一个参数定义被关联的模型名


以上是对django模型层一对一关系的一个简单的学习,代码为示例代码,有什么错误欢迎指正,我也在学习中
       
       
不懂的可以留言
---------------代码为部分代码----------------


猜你喜欢

转载自blog.csdn.net/zhao_5352269/article/details/80797809
今日推荐