亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Django 模型類(models.py)的定義詳解

 更新時(shí)間:2019年07月19日 11:31:39   作者:hskull  
這篇文章主要介紹了Django 模型類(models.py)的定義詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一.

#在models.py中添加
#代碼如下
from django.db import models

#出版商
class Publisher(models.Model):
  name=models.CharField(max_length=30)
  address=models.CharField(max_length=50)
  city=models.CharField(max_length=60)
  state_province=models.CharField(max_length=30)
  country=models.CharField(max_length=50)
  website=models.URLField()
  
#作者
class Author(models.Model):
  name=models.CharField(max_length=30)
  
#作者詳情
class AuthorDetail(models.Model):
  sex=models.BooleanField(max_length=1,choices=((0,'男'),(1,'女')))
  email=models.EmailField()
  address=models.CharField(max_length=50)
  birthday=models.DateField()
  author=models.OneToOneField(Author)
  
#書詳情
class Book(models.Model):
  name=models.CharField(max_length=100)
  authors=models.ManyToManyField(Author)
  publisher=models.ForeignKey(Publisher)
  publication_date=models.DateField()

上面的代碼中:

1. 每個(gè)數(shù)據(jù)模型都繼承django.db.models.Model。他們的父類Model包含了所有必要的和數(shù)據(jù)庫交互的方法,并提供了一個(gè)簡介漂亮的數(shù)據(jù)庫定義語法。

2.每個(gè)模型相當(dāng)于單個(gè)的數(shù)據(jù)庫表(這種情況例外的是多對多的關(guān)系,多對多關(guān)系的時(shí)候會(huì)多生成一張關(guān)系表),每個(gè)屬性也是這個(gè)表中的一個(gè)字段。屬性名就是字段名,它的類型(例CharField)相當(dāng)于數(shù)據(jù)庫的字段類型(例如varchar)。

3.模型間的三種關(guān)系:一對一(OneToOneField) 一對多也就是外鍵(ForeignKey)

多對多(ManyToManyField)

4.模型的常用字段類型:

  • BooleanField:布爾類型字段
  • CharField:字符串類型字段
  • DateTimeField:日期字段
  • DecimalField:(精確)小數(shù)字段
  • EmailField:Email字段
  • FileField:文件字段(保存和處理上傳的文件)
  • FloatField:(浮點(diǎn)數(shù))小數(shù)字段
  • Imagefield:圖片字段(保存和處理上傳的圖片)
  • IPAddressField:IP字段
  • IntegerField:整數(shù)字段
  • SmallIntegerField:小整數(shù)字段
  • TextField:文本字段
  • URLField:網(wǎng)頁地址字段
  • ......

5.模型常用的字段選項(xiàng):

  • null(null=True|False):數(shù)據(jù)庫字段的設(shè)置是否可以為空(數(shù)據(jù)庫進(jìn)行驗(yàn)證)
  • blank(blank=True|False):字段是否為空django會(huì)進(jìn)行校驗(yàn)(表單進(jìn)行驗(yàn)證)
  • choices:輕量級的配置字段可選屬性的定義
  • default:字段的默認(rèn)選項(xiàng)
  • help_text:字符按文字幫助
  • primary_key(=True|False):一般不需要定義是否為主鍵,如果沒有指明主鍵的話,django胡自動(dòng)添加一個(gè)默認(rèn)主鍵:id=models.AutoField(primary_key=True)
  • unique:是否唯一(對于數(shù)據(jù)表而言)
  • verbose_name:字段的詳細(xì)名稱,若不指定該屬性,默認(rèn)使用字段的屬性名稱

二.定義數(shù)據(jù)模型的擴(kuò)展屬性:

通過內(nèi)部類Meta給數(shù)據(jù)模型類增加擴(kuò)展屬性:

class Meta:
  verbose_name='名稱' #這里命名為中文名稱,但顯示時(shí)會(huì)在后面出現(xiàn)一個(gè)s
  verbose_name_plural='名稱復(fù)數(shù)形式' #配合verbose使用去除s
  ordering=[排序字段]

1.

2.

三.定義模型方法:

定義模型方法和定義普通python類方法沒有太大的差別,定義模型方法可以及那個(gè)當(dāng)前對應(yīng)的數(shù)據(jù)組裝成具體的業(yè)務(wù)邏輯。

示例:定義__str__()方法讓對象有個(gè)默認(rèn)名字

注:python2中使用__unicode__(),python3中使用__str__()

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論