首页>>后端>>Python->django怎么取到关联字段(django 自关联)

django怎么取到关联字段(django 自关联)

时间:2023-12-06 本站 点击:0

导读:本篇文章首席CTO笔记来给大家介绍有关django怎么取到关联字段的相关内容,希望对大家有所帮助,一起来看看吧。

Django中,关联查询怎么返回关联字段

就是一个Foreignkey,关于Foreignkey的使用可以参考这个:Django最全查询案例

模型关联关系

模型的对应关系主要分为:一对一,一对多,以及多对多。

常见的几种数据关系,django都提供了很好的支持

注意:通过拓展表去获取学生的信息的话,语法如下;

学生拓展表的单条对象.关联字段,即可获取到学生表的数据

注意:通过学生获取关联表的数据的话,语法如下:

学生对象.关联的表名,即可获取到关联表的数据

在关联字段OneToOneField中加入参数related_name='xxx'

注意:通过学生获取关联表的数据的话,语法如下:

学生对象.关联的字段中定义的related_name参数,即可获取到关联表的数据

修改on_delete参数

models.OneToOneField('Student', on_delete=models.SET_NULL, null=True)

在删除student对象的时候,stuinfo的关联字段会设置为空null=True,如下命令去删除student的数据:

定义一个班级类还有学生类,实现一对多的关系:

注意:使用models.ForeignKey关联 获取对象元素 grade.student_set

语法:通过一获取多的数据

公式: 一的对象.多的模型名小写_set

然后在获取数据all(), get(), filter() 等等

如下先通过学生去获取班级信息:

如下是通过班级获取学生信息:

重点:

定义了related_name字段以后,只能通过related_name去反向获取数据,再也不能通过_set方法去获取数据了

获取python班下的所有学生的信息

获取python班下语文成绩大于80分的女学生

-获取python班下语文成绩超过数学成绩10分的男学生)2.8 获取python班下语文成绩超过数学成绩10分的男学生

获取出生在80后的男学生,查看他们的班级

定义购物车,用户的例子实现多对多:

1. 创建用户模型:

2. 创建商品模型:

获取第一个用户购买了那些商品

获取指定商品的购买用户信息

django 没有建立关联关系的模型可以进行关联查询吗

不可以。关系型数据库就是靠关系来进行关联查询。没有建立关系,如何关联?

推荐一个Django学习网站Django高级教程

Django表关联对象及多表查询

首先建立Student,Dpartment,Course,Stu_info表

一对多表关系数据的添加:

1.第一种方式就是跟之前的一样,用传参的方法添加,需要注意的是外键的值必须是关联表中已经存在的值.

2.第二种方式是用的属性赋值的方式,因为我们在模型类有定义了一个department的属性,而这个属性的对象的类型必须是department表的类实例对象

表关联对象的访问:

Student的模型类中我们有定义department的属性,所以当我们去访问的时候,可以直接通过student.department的形式去找到某个学生的所属学院是哪个.

那么如果我们也希望在在访问某个学院的实现对象的学生的时候改怎么访问呢???

表关联对象的访问:

可以在定义时设置related_name 参数来覆盖foo_set 的名称.

clear() 从关联的对象集中删除所有的对象

多表查询----跨关联关系的查询:

Django 提供一种强大而又直观的方式来“处理”查询中的关联关系,它在后台自动帮你处理JOIN。 若要跨越关联关系,只需使用关联的模型字段的名称,并使用双下划线分隔,直至你想要的字段:

它还可以反向工作。若要引用一个“反向”的关系,只需要使用该模型的小写的名称。

Django怎么多表联合查询

先让我们回忆一下在第五章里的关于书本(book)的数据模型:

1

from django.db import models

class Publisher(models.Model):

name = models.CharField(max_length=30)

address = models.CharField(max_length=50)

city = models.CharField(max_length=60)

state_province = models.CharField(max_length=30)

country = models.CharField(max_length=50)

website = models.URLField()

def __unicode__(self):

return self.name

class Author(models.Model):

first_name = models.CharField(max_length=30)

last_name = models.CharField(max_length=40)

email = models.EmailField()

def __unicode__(self):

return u'%s %s' % (self.first_name, self.last_name)

class Book(models.Model):

title = models.CharField(max_length=100)

authors = models.ManyToManyField(Author)

publisher = models.ForeignKey(Publisher)

publication_date = models.DateField()

def __unicode__(self):

return self.title

如我们在第5章的讲解,获取数据库对象的特定字段的值只需直接使用属性。 例如,要确定ID为50的书本的标题,我们这样做:

from mysite.books.models import Book

b = Book.objects.get(id=50)

b.title

u'The Django Book'

但是,在之前有一件我们没提及到的是表现为ForeignKey 或 ManyToManyField的关联对象字段,它们的作用稍有不同。

访问外键(Foreign Key)值

当你获取一个ForeignKey 字段时,你会得到相关的数据模型对象。 例如:

b = Book.objects.get(id=50)

b.publisher

Publisher: Apress Publishing

b.publisher.website

请教Django如何获取一个model里字段定义的属性

你用all() 返回的是一个对象列表。这样的 [obj1, obj2, ...] 使用 obj.objects.get(id=**) 这样得到的是一个对象, 或者使用 get_object_or_404(obj, id=**) 这样的话, 使用 obj.objects.get(id=**).属性名 既可以了 或者 for obj in obj.objec...

结语:以上就是首席CTO笔记为大家整理的关于django怎么取到关联字段的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django怎么取到关联字段的相关内容别忘了在本站进行查找喔。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/15799.html