如下所示:
# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom 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.usernameclass 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()
以上這篇淺談Django中的數據庫模型類-models.py(一對一的關系)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答