Django使用详解:ORM 的反向查找(related_name)

yipeiwu_com7年前Python基础

先定义两个模型,一个是A,一个是B,是一对多的类型。

class A(models.Model):
  name= models.CharField('名称', max_length=32)

class B(models.Model):
  a= models.ForeignKey(A, verbose_name='A类',related_name = "test")
  name = models.CharField('称呼', max_length=16)

如果我们要查询一个A拥有哪些B的话,那我们要怎么做呢

通过主表来查询子表

A.objects.get(id=A_id).test.all().order_by('-created'),

django 默认每个主表的对象都有一个是外键的属性,可以通过它来查询到所有属于主表的子表的信息。这个属性的名称默认是以子表的名称小写加上_set()来表示(上面默认以b_set访问),默认返回的是一个querydict对象。

related_name 可以给这个外键定义好一个别的名称

通过子表来查询主表

B.objects.filter(a=A_id).order_by('-created')

以上这篇Django使用详解:ORM 的反向查找(related_name)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

详解Python最长公共子串和最长公共子序列的实现

详解Python最长公共子串和最长公共子序列的实现

最长公共子串(The Longest Common Substring) LCS问题就是求两个字符串最长公共子串的问题。解法就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情...

对python pandas 画移动平均线的方法详解

数据文件 66001_.txt 内容格式: date,jz0,jz1,jz2,jz3,jz4,jz5 2012-12-28,0.9326,0.8835,1.0289,1.0027,1...

python中pygame模块用法实例

python中pygame模块用法实例

本文实例讲述了python中pygame模块用法,分享给大家供大家参考。具体方法如下: import pygame, sys from pygame.locals import *...

Python使用Slider组件实现调整曲线参数功能示例

Python使用Slider组件实现调整曲线参数功能示例

本文实例讲述了Python使用Slider组件实现调整曲线参数功能。分享给大家供大家参考,具体如下: 一 代码 import numpy as np import matplotli...

Pytorch 实现计算分类器准确率(总分类及子分类)

分类器平均准确率计算: correct = torch.zeros(1).squeeze().cuda() total = torch.zeros(1).squeeze().cuda...