最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django有外鍵關系的兩張表如何相互查找

 更新時間:2020年02月10日 11:46:41   作者:xushukui  
這篇文章主要介紹了django有外鍵關系的兩張表如何相互查找,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了django有外鍵關系的兩張表如何相互查找,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

兩張通過外鍵聯(lián)系的表,如何在一張表上根據(jù)另一張表上的屬性查找滿足條件的對象集?

平常查找表中數(shù)據(jù)的條件是python中已有的數(shù)據(jù)類型,通過名字可以直接查找。如果條件是表中外鍵列所對應表的某一列,該如何查詢數(shù)據(jù)?

表1是新聞表,是回復表中某一外鍵指向的表,表2是回復表。

問題1:根據(jù)表1的某些條件來查找表2的對象集。

class News(models.Model):
 title = models.CharField(max_length=50);
 summary = models.TextField();
 
 url = models.CharField(max_length=150);
 favorCount = models.IntegerField(default=0);
 favorUsername = models.TextField(default="");
 replyCount = models.IntegerField(default=0);

class Reply(models.Model):
 content = models.TextField();
 user = models.ForeignKey('User');
 newID = models.ForeignKey('News');
 replyTime = models.DateTimeField(auto_now_add=True);
 
 def __unicode__(self):
  return self.content;

像這樣的數(shù)據(jù)表,想要查找對于新聞id是3的所有回復?

方法一、首先獲得外鍵指向的表中對象,然后通過‘_set'這樣的方法獲得目標表中的數(shù)據(jù)。

obj = models.News.objects.get(id=3)
replys = obj.reply_set.all()

方法二、直接在目標表中通過雙下劃線來指定外鍵對應表中的域來查找符合條件的對象。

models.Reply.objects.filter(newID__id=3)

問題2: 根據(jù)表2的某些條件查找表1的對象集。此時需要將表2的名字小寫加兩個下劃線,再加上查找條件。比如:查找回復內容中包含“new”的所有新聞

models.News.objects.filter(reply__content__contains='new');

在filter中可以這樣用,在values方法中也可以這樣使用,此時的值便是外鍵對應表中的數(shù)據(jù)。

2.在使用django中避免不了要跟前臺進行數(shù)據(jù)交互,而python中的數(shù)據(jù)類型豐富,比如datetime模塊的datetime類型就不可以json編碼,如果想要繼續(xù)json格式化,有兩種方法可以解決,

1)使用django提供的格式化

2)自己編寫編碼器或默認處理函數(shù)。

注意:pyhton中json只會編碼python中自己的數(shù)據(jù)類型,比如數(shù)字、字符串、元組、列表、字典等。在django中處理數(shù)據(jù)經常遇到queryset這類數(shù)據(jù),需要先將他轉化成列表再json編碼。[list(queryset)]
方法一、所以需要更強勁的django.core提供的serializers.serialize方法,一般使用json格式就是serializers.serialize('json',data)??梢院芊奖愕膶jango中所有數(shù)據(jù)類型進行json格式編碼。

方法二、自己編寫編碼器或者寫默認處理函數(shù)

1)寫自己的編碼器類

class MyJSONEncoder(json.JSONEncoder):
 def default(self, obj):
  if isinstance(obj, datetime.datetime):
   return (datetime.timedelta(hours=8)+obj).strftime('%Y-%m-%d %H:%M:%S');
  elif isinstance(obj, datetime.date):
   return obj.strftime("%Y-%m-%d")
  else:
   return json.JSONEncoder.default(self, obj)

2)寫自己的默認處理函數(shù)

def myDumps(obj):
 if isinstance(obj, datetime.datetime):
  return (datetime.timedelta(hours=8)+obj).strftime('%Y-%m-%d %H:%M:%S');
 else:
  return json.dumps(obj);

對其進行測試

t = datetime.datetime.utcnow();
 a=[1,2,43,56]; 
 print json.dumps(t,default=myDumps);
 print json.dumps(a,default=myDumps);
 a.extend([t,t+datetime.timedelta(hours=8)]);
 print json.dumps(t,default=myDumps);
 print json.dumps(a,cls=MyJSONEncoder);

測試結果

"2016-06-26 09:53:03"
[1, 2, 43, 56]
"2016-06-26 09:53:03"
[1, 2, 43, 56, "2016-06-26 09:53:03", "2016-06-26 17:53:03"]

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python內存占用過多問題以及其解決方案

    python內存占用過多問題以及其解決方案

    Python是一種高級編程語言,被廣泛應用于各種領域,包括網站開發(fā)、數(shù)據(jù)分析、人工智能等,這篇文章主要給大家介紹了關于python內存占用過多問題以及其解決方案的相關資料,需要的朋友可以參考下
    2024-08-08
  • 最基礎的Python的socket編程入門教程

    最基礎的Python的socket編程入門教程

    這篇文章主要介紹了最基礎的Python的socket編程入門教程,包括最基本的發(fā)送和接受信息等內容,需要的朋友可以參考下
    2015-04-04
  • mac在matplotlib中顯示中文的操作方法

    mac在matplotlib中顯示中文的操作方法

    這篇文章主要介紹了mac如何在matplotlib中顯示中文,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 基于Python中isfile函數(shù)和isdir函數(shù)使用詳解

    基于Python中isfile函數(shù)和isdir函數(shù)使用詳解

    今天小編就為大家分享一篇基于Python中isfile函數(shù)和isdir函數(shù)使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python小球落地問題及解決(遞歸函數(shù))

    python小球落地問題及解決(遞歸函數(shù))

    這篇文章主要介紹了python小球落地問題及解決(遞歸函數(shù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python?特有語法推導式的基本使用

    python?特有語法推導式的基本使用

    python中有一種特有的語法,就是推導式(又稱為解析式)。推導式是可以從一個數(shù)據(jù)序列構建另一個新的數(shù)據(jù)序列的結構體
    2022-03-03
  • 如何在Django項目中引入靜態(tài)文件

    如何在Django項目中引入靜態(tài)文件

    這篇文章主要介紹了如何在Django項目中引入靜態(tài)文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python讀取Excel實例詳解

    python讀取Excel實例詳解

    這篇文章主要為大家詳細介紹了python讀取Excel的實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 用Python寫一段用戶登錄的程序代碼

    用Python寫一段用戶登錄的程序代碼

    下面小編就為大家分享一篇用Python寫一段用戶登錄的程序代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python實現(xiàn)Web指紋識別實例

    Python實現(xiàn)Web指紋識別實例

    這篇文章主要來帶大家探索Web指紋識別:了解主流識別方式,從標題到指紋讀取網站信息的簡單方法,揭秘Web指紋識別 關鍵字、哈希和URL的魔力
    2023-10-10

最新評論

迁西县| 璧山县| 昌宁县| 奇台县| 宜丰县| 尼木县| 中超| 章丘市| 南川市| 荣成市| 中江县| 施秉县| 马龙县| 锦州市| 全椒县| 政和县| 昌江| 札达县| 东港市| 三台县| 兴安盟| 云安县| 德格县| 崇州市| 闵行区| 巴楚县| 韶山市| 凤城市| 栾川县| 五台县| 保山市| 华亭县| 汝南县| 馆陶县| 忻州市| 若尔盖县| 化德县| 龙海市| 永靖县| 桦川县| 涪陵区|