国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

django查詢常用操作符及models和admin的寫法

2019-11-14 17:38:11
字體:
來源:轉載
供稿:網友

以Publisher、Author、Book的model為例子

#coding=utf-8from django.db import models# Create your models here.class Publisher(models.Model):    name=models.CharField(verbose_name="出版社",max_length=30)    address=models.CharField(verbose_name="地址",max_length=50)    city=models.CharField(verbose_name="城市",max_length=60)    state_PRovince=models.CharField(verbose_name="省份",max_length=30)    country=models.CharField(verbose_name="國家",max_length=50)    #加上blank=True可以后臺對于這個字段就不是必須填了    website=models.URLField(verbose_name="網址",blank=True)    #可以在object中看到name信息    def __unicode__(self):        return self.name    #直接排序,每次查詢出來的都按name來默認排序    class Meta:
     verbose_name = "出版社列表" ordering
= ['name']class Author(models.Model): first_name=models.CharField(verbose_name="",max_length=30) last_name=models.CharField(verbose_name="",max_length=40) email=models.EmailField(verbose_name="郵箱",blank=True) def __unicode__(self): return self.first_name+self.last_nameclass Book(models.Model): title=models.CharField(verbose_name="書名",max_length=100) #注意ManyToManyField、ForeignKey這里Author和Publisher必須放第一個 authors=models.ManyToManyField(Author,verbose_name=u"作者") publisher=models.ForeignKey(Publisher,verbose_name="出版社") #想要時間格式的數據為空只能允許NULL值,故必須設blank=True,null=True publication_date=models.DateField(verbose_name="出版時間",blank=True,null=True) def __unicode__(self): return self.title

 

如下:

1、Publisher.objects.all() 查詢全部字段信息。

2、Publisher.objects.filter(name="xx",country="xx") 查詢name和country符合的Publisher對象數組。

3、Publisher.objects.filter(name__contains="xx") 查詢name中存在指定項的Publisher對象數組。

4、Book.objects.filter(authors__first_name__exact="xx") 查詢Book中authors的first_name為指定項的對象數組。exact是精確查詢。上面的contains是包含查詢。都可以進行關系聯查,可以一直聯查下去。注意雙下劃線“__”。

5、Publisher.objects.get(name="xx") 查詢name符合指定項的publisher對象,注意這里不是數組,是一個對象。如果查詢中出現多個或沒有對象將拋出異常??梢愿鶕惓_M行捕捉來處理。如:

try:    p = Publisher.objects.get(name='Apress')except Publisher.DoesNotExist:    print "Apress isn't in the database yet."else:    print "Apress is in the database."

6、Publisher.objects.order_by("xx","xx") 查詢按指定項排列后的publisher對象數組。逆向排序可以Publisher.objects.order_by("-xx")

7、Publisher.objects.exclude(name="xx") 查詢除了指定name的publisher對象數組。

8、Publisher.objects.create(name="xx",address="xxxx") 插入name和address到publisher中。也可以分兩步:

  p1=Publisher(name="xx",address="xxxx")   

  p1.save() 沒有save()的將不會插入數據庫。獲取到p1對象后可以直接p1.name="xxx"來改name,然后記得p1.save()才會存入數據庫。

9、PUblisher.objects.filter(id=1).update(name="xxx") 這直接修改了id=1的name值,返回更新數量,比上面的形式好。

10、Publisher.objects.filter(country="xx").delete() 刪除指定數據。

11、Publisher.objects.order_by('name')[0] 只取第一個publisher對象。不支持負索引,不過可以Publisher.objects.order_by('-name')[0] 

  publisher.objects.order_by('name')[1:3] 從前3個publisher對象中取第二個及以后的所有對象,這樣就去到了2個對象的數組。

連鎖查詢:

  Publisher.objects.filter(country="xx").order_by("-name")

 *************************************************************************************************************************

#coding=utf-8from django.contrib import adminfrom books.models import *# Register your models here.class AuthorAdmin(admin.ModelAdmin):    #指定在列表中視圖中展現的字段    list_display = ('first_name','last_name','email')    #指定搜索的字段    search_fields = ('first_name','last_name')class BookAdmin(admin.ModelAdmin):    list_display = ('title','publisher','publication_date')    #`` 過濾器`` 同樣適用于其它類型的字段,而不單是`` 日期型`` (請在`` 布爾型`` 和`` 外鍵`` 字段上試試)。    #注意第一個字段后面一定要加‘,’    list_filter = ('publication_date',)    #請注意,date_hierarchy接受的是* 字符串* ,而不是元組。因為只能對一個日期型字段進行層次劃分。    date_hierarchy = 'publication_date'    #默認排序方式,和models中的class Meta的ordering一樣的原理。    ordering = ('-publication_date',)    #排列的展現順序,不寫的就不會展現出來,就不能編輯改變了。    fields = ('title','authors','publication_date','publisher')    #以左右選框的形式展現,注意models中的authors的verbose_name=u"中文",這里必須要加u 不然不顯示javascript編碼失效了    filter_horizontal = ('authors',)    #以id的方式顯示,但是可以查詢的    # raw_id_fields = ('publisher',)admin.site.register(Book,BookAdmin)admin.site.register(Publisher)admin.site.register(Author,AuthorAdmin)

 參考資料:http://my.oschina.net/kinegratii/blog/220276      http://www.pythontip.com/blog/post/12348/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荣昌县| 台中县| 烟台市| 常宁市| 郸城县| 华阴市| 胶南市| 县级市| 九寨沟县| 土默特左旗| SHOW| 嫩江县| 万年县| 新安县| 新兴县| 玛纳斯县| 宁化县| 从化市| 杭锦后旗| 高阳县| 尼木县| 龙江县| 本溪| 慈利县| 伊春市| 铜鼓县| 庄浪县| 兰西县| 苏州市| 武鸣县| 益阳市| 莒南县| 文昌市| 博兴县| 司法| 三门县| 江川县| 葫芦岛市| 綦江县| 贺州市| 枝江市|