django正反向查询
生活随笔
收集整理的這篇文章主要介紹了
django正反向查询
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
django正反向查詢
當(dāng)我們的表存在外鍵想要從一找多的時(shí)候該怎么查找,當(dāng)我們從多找一的時(shí)候又應(yīng)該怎么查找.
一找多
- 首先我們要?jiǎng)?chuàng)建一個(gè)項(xiàng)目,在項(xiàng)目的model.py中創(chuàng)建兩個(gè)模型.
from django.db import modelsclass UserType(models.Model):title = models.CharField(max_length=32)class UserInfo(models.Model):name = models.CharField(max_length=16)age = models.IntegerField()ut = models.ForeignKey('UserType',on_delete=models.CASCADE)
- 在我們的views.py中創(chuàng)建我們的視圖類.
from django.shortcuts import render,HttpResponsefrom django.views import Viewfrom .models import UserInfo, UserTypeclass Index(View):def get(self, request):#一找多,一個(gè)用戶類型應(yīng)該對(duì)應(yīng)多個(gè)用戶.#首先我們找到一個(gè)id為1的用戶對(duì)象results = UserType.objects.filter(id=1).first()#然后用多的那個(gè)類名的小寫對(duì)加下劃線加set可以找到一個(gè)類型對(duì)應(yīng)的所有用戶objs = results.userinfo_set.all()#找到相應(yīng)的用戶的信息for row in objs:print(row.name)return HttpResponse('ok')
- 配置url,運(yùn)行項(xiàng)目可以看到運(yùn)行的結(jié)果
from django.contrib import adminfrom django.urls import pathfrom . import viewsurlpatterns = [path('admin/', admin.site.urls),path('index/',views.index),path('newindex/',views.NewIndex.as_view())]
多找一
class Index(View):def get(self, request):result=UserInfo.objects.all()for obj in result:print(obj.name,obj.age,obj.ut.id)
運(yùn)行就可一看到結(jié)果.
備注:
- 多找一的時(shí)候比較簡(jiǎn)單,在一找多的時(shí)候有點(diǎn)繞,所以就簡(jiǎn)單處理一下多找一.
總結(jié)
以上是生活随笔為你收集整理的django正反向查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解释型语言与编译型的必须知识点
- 下一篇: django自带的分页功能