日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django 模型类的常见字段约束,以及filter 过滤和查询

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django 模型类的常见字段约束,以及filter 过滤和查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

null

不設置時默認設置為False。設置為True時,數據庫表字段中將存入NULL的記錄。 null和blank組合使用,null=True,blank=True,表示該字段可以為空

blank

默認設置為False。設置為True時,表字段許可無任何輸入。設置為False 時,表字段為必須輸入的字段

?

choices

備選設置。選擇列表選項,如果設置后,該字段的表單必然會是下拉選擇的。這個值必須是一個有小括號構成的元組,每個元組前一個字段將存入數據庫,后一個字段是顯示給用戶看的。

default

默認值,設置后在用戶無輸入時,表字段將以這個選項的內容來存儲到數據庫字段

可以為python 支持的任意數據對象

editable

如何設置為False,將不會參與到表單的驗證。默認是設置為True的

error_messages

這個選項實現校驗時的錯誤提示。是字典結構的內容。

help_text

在表單中形成輸入提示內容

primary_key

主鍵,設置為 True ,該字段將啟用為主鍵。 默認是 False

unique

設置為 True 啟用不存在重復值輸入的設定,默認為False

unique_for_date

?

設定日期不存在重復輸入,默認為False

?

verbose_name

字段的文本標簽

validators

校驗選項,用來配置校驗的方法,構成的列表。

max_length

最大輸入字符串的長度

min_length

最少輸入字符串的長度


AutoField 自動增值的id字段

primary_key=True 為必設置選項

BigAutoField 自動增值的id字段

支持 1?到?9223372036854775807,之間的序號

BigIntegerField 長整形字段

?從?-9223372036854775808?到9223372036854775807 的整數

BinaryField 二進制字段

存儲內存二進制數據,以 python bytes 對象來訪問

BooleanField 布爾值字段

如果許可空的布爾值輸入,換用 NullBooleadField

CharField可變長字符串字段

max_length 有最大輸入選項為必須設置的選項

DateField日期字段

auto_now:每一次保存對象時,Django 都會自動將該字段的值設置為當前時間。一般用來表示 "最后修改" 時間。要注意使用的是當前日期,而并非默認值,所以

不能通過重寫默認值的辦法來改變保存時間。

auto_now_add:在第一次創建對象時,Django 自動將該字段的值設置為當前時間,一般用來表示對象創建時間。它使用的同樣是當前日期,而非默認值

DateTimeField 有時刻的日期字段

auto_now=False

auto_now_add=False

當auto_now或者auto_now_add設置為True時,字段會有editable=True和blank=True的設定

; 固定精度的十進制數的字段。

它有兩個必須的參數

max_digits:數字允許的最大位數

decimal_places:小數的最大位數

例如,要存儲的數字最大值是999,而帶有兩個小數位,你可以使用

models.DecimalField(..., max_digits=5, decimal_places=2)

DurationField 日期時間增量型字段,存儲著python timedelta 類數據

EmailField 郵件字段

FileField 文件字段

FilePathField 文件路徑字段

FloatField 小數字段

ImageField 圖片字段

IntegerField 整數字段

GenericIPAddressField ip地址字段

NullBooleanField 許可null的布爾值字段

PositiveIntegerField

0 到 2147483647,支持所有數據庫取值范圍的安全整數。

PositiveSmallIntegerField

0 到 32767 支持所有數據庫取值范圍的安全短整數。

SlugField

SmallIntegerField 短整形字段

TextField 備注型字段,用于存儲復雜

TimeField 時間字段

URLField 網址字段

UUIDField

Python UUID 數據對象,一個32位長度的ID字符串

映射字段

ForeignKeyField 一對多字段

映射字段

ManyToManyField 多對多字段

映射字段

OneToOneField 一對一字段

?

?

表的查詢

查詢

Person.objects.all().order_by(“-username”)? ?按照username字段值 反向排序

Person.objects.all()[:10]切片操作,獲取10個人,不支持負索引,切片可以節約內存,不支持負切片

Person.objects.get(name=name)? get獲取不到報異常,不可取

get是用來獲取一個對象的,如果需要獲取滿足條件的一些人,就要用到filter

?

Person.objects.filter(name="abc")# 等于

Person.objects.filter(name__exact="abc")名稱嚴格等于 "abc" 的人

Person.objects.filter(name__iexact="abc")# 名稱為abc 但是不區分大小寫,可以找到ABC, Abc, aBC,這些都符合條件

***Person.objects.filter(name__contains="abc")# 名稱中包含"abc"的人

***Person.objects.filter(name__icontains="abc")#名稱中包含"abc",且abc不區分大小寫

Person.objects.filter(name__regex="^abc")# 正則表達式查詢

Person.objects.filter(name__iregex="^abc")#正則表達式不區分大小寫

****

Person.objects.filter(age__gt=15)# age > 15

Person.objects.filter(age__lt=15)# age < 15

Person.objects.filter(age__gte=15)# age >= 15

Person.objects.filter(age__lte=15)# age <= 15

Person.objects.filter(age__ne=15)# age != 15

數據的歸檔

?times = Person.objects.datas('add_time','month',order='desc')? 默認正序,desc 倒序

?month? ?表示精準到月

?前端頁面

{%? for time? in times %}?

? ? ?{{ time.year }} 年 {{time.month}} 月 {{time.day}}日? ? 精準到月,這個time.day? 永遠是 1

{% endfor %}

filter 過濾有多個條件時

使用django的Q對象表示或者

from django.db.models import Q

Person.objects.filter(Q(name='張三') | Q(age=18))

查詢過濾字段

__exact 精確等于 ?????????????????????????????like 'aaa'

?__iexact 精確等于 忽略大小寫????????????????ilike 'aaa'

?__contains 包含 ?????????????????????????????like'%aaa%'

?__icontains 包含 忽略大小寫 ilike '%aaa%',但是對于sqlite來說,contains的作用效果等同于icontains。

__gt 大于

__gte 大于等于

__lt 小于

__lte 小于等于

__in存在于一個list范圍內

*****

__startswith以...開頭

__istartswith以...開頭忽略大小寫

__endswith以...結尾

__iendswith以...結尾,忽略大小寫?

__range 在...范圍內

__year日期字段的年份? ?如? ?.filter(add_time_year ='2018')? 篩選添加時間年份為2018年的數據

__month日期字段的月份

__day日期字段的日

__isnull=True/False

轉載于:https://www.cnblogs.com/pythonClub/p/9932024.html

總結

以上是生活随笔為你收集整理的django 模型类的常见字段约束,以及filter 过滤和查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。