国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

django filter過濾器實現(xiàn)顯示某個類型指定字段不同值方式

瀏覽:3日期:2024-09-25 09:41:32

1,前端樣式

django filter過濾器實現(xiàn)顯示某個類型指定字段不同值方式

2,html代碼

{% load asset_filter %}<div class='col-sm-2'> <select name='ServiceModel'> <option value=''>模塊</option> {% for i in ’Ecs’|ecs_model_field_distinct:’ServiceModel’ %} {% if i.0 %} <option value='{{ i.0 }}'>{{ i.0 }}</option> {% endif %} {% endfor %} </select></div>

3,后端代碼

asset_filter.py 內(nèi)容如下:

@register.filter(name=’ecs_model_field_distinct’)def ecs_model_field_distinct(model_name, field_name): ’’’ 獲取model_name模塊對象的某個屬性field_name的distinct值,返回值的數(shù)組 :param model_name: :param field_name: :return: ’’’ asset_app = apps.get_app_config(’rule’) return asset_app.get_model(model_name).objects.all().values_list(field_name).distinct()

補充知識:django 模型類的常見字段約束,以及filter 過濾和查詢

null

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

blank

默認(rèn)設(shè)置為False。設(shè)置為True時,表字段許可無任何輸入。設(shè)置為False 時,表字段為必須輸入的字段

choices

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

default

默認(rèn)值,設(shè)置后在用戶無輸入時,表字段將以這個選項的內(nèi)容來存儲到數(shù)據(jù)庫字段

可以為python 支持的任意數(shù)據(jù)對象

editable

如何設(shè)置為False,將不會參與到表單的驗證。默認(rèn)是設(shè)置為True的

error_messages

這個選項實現(xiàn)校驗時的錯誤提示。是字典結(jié)構(gòu)的內(nèi)容。

help_text

在表單中形成輸入提示內(nèi)容

primary_key

主鍵,設(shè)置為 True ,該字段將啟用為主鍵。 默認(rèn)是 False

unique

設(shè)置為 True 啟用不存在重復(fù)值輸入的設(shè)定,默認(rèn)為False

unique_for_date

設(shè)定日期不存在重復(fù)輸入,默認(rèn)為False

verbose_name

字段的文本標(biāo)簽

validators

校驗選項,用來配置校驗的方法,構(gòu)成的列表。

max_length

最大輸入字符串的長度

min_length

最少輸入字符串的長度

AutoField 自動增值的id字段

primary_key=True 為必設(shè)置選項

BigAutoField 自動增值的id字段

支持 1 到 9223372036854775807,之間的序號

BigIntegerField 長整形字段

從 -9223372036854775808 到9223372036854775807 的整數(shù)

BinaryField 二進制字段

存儲內(nèi)存二進制數(shù)據(jù),以 python bytes 對象來訪問

BooleanField 布爾值字段

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

CharField可變長字符串字段

max_length 有最大輸入選項為必須設(shè)置的選項

DateField日期字段

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

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

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

DateTimeField 有時刻的日期字段

auto_now=False

auto_now_add=False

當(dāng)auto_now或者auto_now_add設(shè)置為True時,字段會有editable=True和blank=True的設(shè)定

; 固定精度的十進制數(shù)的字段。

它有兩個必須的參數(shù)

max_digits:數(shù)字允許的最大位數(shù)

decimal_places:小數(shù)的最大位數(shù)

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

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

DurationField 日期時間增量型字段,存儲著python timedelta 類數(shù)據(jù)

EmailField 郵件字段

FileField 文件字段

FilePathField 文件路徑字段

FloatField 小數(shù)字段

ImageField 圖片字段

IntegerField 整數(shù)字段

GenericIPAddressField ip地址字段

NullBooleanField 許可null的布爾值字段

PositiveIntegerField

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

PositiveSmallIntegerField

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

SlugField

SmallIntegerField 短整形字段

TextField 備注型字段,用于存儲復(fù)雜

TimeField 時間字段

URLField 網(wǎng)址字段

UUIDField

Python UUID 數(shù)據(jù)對象,一個32位長度的ID字符串

映射字段

ForeignKeyField 一對多字段

映射字段

ManyToManyField 多對多字段

映射字段

OneToOneField 一對一字段

表的查詢

查詢

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

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

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

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

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

Person.objects.filter(name__exact='abc')名稱嚴(yán)格等于 'abc' 的人

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

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

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

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

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

****

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

數(shù)據(jù)的歸檔

times = Person.objects.datas(’add_time’,’month’,order=’desc’) 默認(rèn)正序,desc 倒序

month 表示精準(zhǔn)到月

前端頁面

{% for time in times %}

{{ time.year }} 年 {{time.month}} 月 {{time.day}}日 精準(zhǔn)到月,這個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范圍內(nèi)

*****

__startswith以...開頭

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

__endswith以...結(jié)尾

__iendswith以...結(jié)尾,忽略大小寫

__range 在...范圍內(nèi)

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

__month日期字段的月份

__day日期字段的日

__isnull=True/False

以上這篇django filter過濾器實現(xiàn)顯示某個類型指定字段不同值方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 人成在线免费视频 | 九九99九九视频在线观看 | 在线看a级片 | 免费观看黄色毛片 | 国产精品国产三级国产专区5o | 手机看片1024国产基地 | 波多野结衣一区二区 | 香蕉超级碰碰碰97视频在线观看 | 日本欧美一区二区 | 黄色w站| 亚洲天堂网在线观看 | 一级免费看片 | 三级做人爱c视频18三级 | 欧美一级高清片欧美国产欧美 | 午夜精品一区二区三区在线观看 | 五月天激激婷婷大综合蜜芽 | 女人精aaaa片一级毛片女女 | 亚洲高清自拍 | 成人在线精品视频 | 高清在线观看自拍视频 | 欧美xx在线观看 | 国产波多野结衣中文在线播放 | 久久亚洲综合 | 美女视频网站免费播放视 | a毛片免费全部播放毛 | 亚洲欧美精品久久 | 亚洲综合精品一二三区在线 | 无码免费一区二区三区免费播放 | 日本欧美大片 | 国产成人高清亚洲一区久久 | 午夜性爽视频男人的天堂在线 | 国产欧美日韩视频在线观看 | 中文字幕波多野不卡一区 | 国产一区二区三区四区五区tv | 日韩中文字幕在线视频 | 91国在线高清视频 | 久久久久久久久久久久福利 | 国产极品精频在线观看 | 国产在线91区精品 | 欧美一级特黄一片免费 | 免费一级欧美片在线观看 |