首页
学习
活动
专区
圈层
工具
发布

Django之ForeignKey和ManyToManyField多表查询

e.blog并调用save方法存入数据库 >>> e.blog = some_blog >>> e.save() 如果ForeignKey 字段有null=True 设置(即它允许NULL值),可以分配None来删除对应的关联性...(Group) person = models.ForeignKey(Person) inviter = models.ForeignKey(Person, related_name="...Django 会自动创建一个表来管理多对多关系, 若要手动指定关联表则需要使用through关键字参数....ManyToManyField.through_fields 上文示例中Membership 有两个外键指向Person (person 和inviter),这使得关联关系含混不清并让Django 不知道使用哪一个...在这种情况下,必须使用through_fields 明确指定Django 应该使用哪些外键 through_fields 接收一个二元组('field1', 'field2'),其中field1 为指向定义

2.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django官方文档小结(一) -- Models模型

    与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象) #2.4 数据库表示 在生成数据库时,Django追加"_id"字段名称来创建其数据库列名,可以通过指定显式更改此内容db_column...entryqueryblogs" ) class Meta: db_table = "app名_Entry" # app名+类名(个人喜好,根据项目中遇到的坑,我建议表名应该为...:小写app名+小写的类名) #3.2 跨表订购 (order_with_respect_to) 目前通过做过的这些项目,这个功能感觉有点鸡肋,具体怎么用还是要说一下 格式 class Entry(models.Model...class Meta: order_with_respect_to = 'blog' # fk字段名 使用场景 >>> b = models.Blog.objects.get(id=1)...b.get_entry_order() # 里面存放的仅仅是int类型的数据,并不是obj 拿到的仅仅是一个由id组成的列表,并不是我们想要的queryset数据 使用

    1K20

    Django model 层之Models与Mysql数据库小结

    如果使用SQLite,数据库文件将存放在电脑上,这种情况下,NAME应该为绝对路径,包含数据库文件的文件名。默认值如下,把数据库文件存放在项目根目录下。...总之,不管是默认设置还是显示设置,必须有一个自增主键列。...CharField 字符串类型。用于存储一定范围大小的字符串。针对大量文本,使用TextField。该field的默认组建为:TextInput 。 CharField有个额外的必填参数。...默认200. field对应的默认表单组件为:TextInput UUIDField 存储全球唯一标识(universally unique identifier)。使用Python的UUID类。...blank 如果设置blank=True, 允许Field值为空,字符型字段CharField和TextField是用空字符串来存储空值的。

    2.8K20

    Django实战-信息资讯-付费资讯基础模型

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...课程分类、讲师、课程、支付订单,会发现在用户购买之前怎样限制用户不能观看视频,是通过一个字段来判断用户是否购买,还是通过查询数据库,查找用户是否有支付过这一笔课程订单。...① 课程分类 class CourseCategory(models.Model): name = models.CharField(max_length=100, verbose_name="...分类名称") ② 讲师 class Teacher(models.Model): username = models.CharField(max_length=100, verbose_name...="名称") jobtitle = models.CharField(max_length=100, verbose_name="职称") profile = models.TextField

    63210

    Django学习-第七讲:django 中的常用字段、字段属性,外键和表关系、外键操作

    UUIDField 只能存储uuid格式的字符串。uuid是一个32位的全球唯一的字符串,一般用来作为主键。 17. URLField 类似于CharField,只不过只能用来存储url格式的字符串。...然后在这个类中添加一些类属性来控制模型的作用。比如我们想要在数据库映射的时候使用自己指定的表名,而不是使用模型的名称。那么我们可以在Meta类中添加一个db_table的属性。...) 以上使用ForeignKey来定义模型之间的关系。...即在article的实例中可以通过author属性来操作对应的User模型。这样使用起来非常的方便。...如果想要引用另外一个app的模型,那么应该在传递to参数的时候,使用app.model_name进行指定。

    5.8K30

    Django——ContentType(与多个表建立外键关系)及ContentType-signals的使用

    使用signals来监听用户的动作有很多好处,1、不管这个动作是发生在什么页面,甚至在很多页面都可以发生这个动作,都只需要写一次代码来监听保存object这个动作就可以了。...对于新鲜事这个功能来说就是使用GenericRelation来产生一个特殊的外键,它不像models.ForeignKey那样,必须指定一个Model来作为它指向的对象。...这样关于保存用户所产生的这个动作,比如用户写了一片日志,我们就可以使用Generic relations来指向某个Model实例比如Post,而那个Post实例才真正保存着关于用户动作的完整信息,即Post...,也需要与SurveryRecord建立外键关系,那么此时应该怎么做呢?...如果再来一种课程,上面的优惠券表还需要额外新增一列,为了解决這个问题,我们可以使用ContentType类来实现上述需求。

    5.2K20

    Django开发在线教育平台--学习整理(一)

    个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏。可以删除收藏,我的消息。 导航栏: 公开课,授课讲师,授课机构,全局搜索。 点击公开课–> 课程列表,排序-搜索。...机构列表页右侧有快速提交我要学习的表单。 点击机构–> 左侧:机构首页,机构课程,机构介绍,机构讲师。 后台管理系统可以切换主题。左侧每一个功能都有列表显示, 增删改查,筛选功能。...当django在根目录下找不到app时会去apps中去寻找,但此时pycharm知道这么做,而django不知道,所以还要到settings中配置。...4、null=True和blank=True通常一起使用,null代表数据库可以为空,blank代表后台表单数据填写时可以留白。...5、choices用于选择框,在使用前应该在class中定义一个可迭代对象,[(A, B), (A, B) ...]

    3.3K90

    一篇文章带你了解Django ORM操作(基础篇)

    但是通常情况下,我们不是太需要那么苛刻的性能,也没有那么多刁钻的需求用原生SQL 通常会使用简单快捷的ORM进行增删改查 一起看学习一下Django的ORM操作吧 表结构设计 还是从实际角度出发。...但是又想了想,似乎我的书想发布,肯定是需要一个出版社帮我发布的,我肯定不能自己发布所以是这样子的。 ? 又想了想,书肯定是人写的,肯定要有作者,所以还需要一个作者表,应该是这样子的。 ?...其实,上述漏点了一个东西,图书需要归属一个出版社的,所以,最终表结构应该是这样的! ?...filter通过__来构造条件 # 包含三 字段__contains="三" # 原生SQL条件:where 字段 like "%三%" # 以三开头 字段__startswith="三" # 原生SQL...但是这个get不太推荐使用,原因如下 如果get条件获取了俩或俩以上的值,会报错。 如果get条件获取不到值,还是会报错。

    1.8K11

    Django 中显示图片

    以下是详细步骤:问题背景:我在学习 Django 并在构建一个简单的网站,我尝试使用模板语言添加一些图片,但显示的结果是只有小的蓝色问号图标,而不是预期的图片。...以下是使用的模型定义:from django.db import models​class Galery(models.Model): title = models.CharField(max_length...= 120)​ def __unicode__(self): return self.title​class Image(models.Model): galery = models.ForeignKey...MEDIA_URL 是用于访问媒体文件的 URL 前缀,而 MEDIA_ROOT 是媒体文件在服务器上的实际存储路径。确保它们的值是正确的,并且媒体文件已经上传到 MEDIA_ROOT 中。...主要步骤包括配置静态和媒体文件路径、创建上传表单和处理视图、配置 URL 路由以及创建模板来展示图片。

    1.2K10

    「应用安全」OAuth和OpenID Connect的全面比较

    OAuth就是为此而存在的。一旦理解了这一点,您可以通过检查是否满足以下条件来判断您是否应该为公司的服务准备OAuth服务器。 您的服务管理用户的数据。 您希望第三方为您的服务用户开发应用程序。...- 抱歉,我不知道他们是否真的有这种感觉,但至少我可以想象他们认为OAuth身份验证远远超出他们之前定义的规范级别,如OpenID 2.0和SAML。...因此,在典型情况下,授权服务器的实现者定义数据库表以存储关于客户端应用程序的信息。 要确定表应该具有哪些列,实现者通过阅读规范来列出项目。例如,阅读RFC 6749将使您意识到至少需要以下项目。...因此,客户端应用程序的数据库表应该能够存储这些信息。...需要额外考虑数据库表设计来存储本地化属性值。 以下小节是我对客户应用程序属性的个人意见。 6.1 客户类型 我担心定义规范是一种错误2.

    3.3K60

    从0开始构建一个Oauth2Server服务 授权范围 Scope

    有些应用仅使用 OAuth 来识别用户,因此它们只需要访问用户 ID 和基本配置文件信息。其他应用程序可能需要了解更敏感的信息,例如用户的生日,或者它们可能需要能够代表用户发布内容或修改个人资料数据。...例如,如果您在“customer”组中有一个用户,并且应用程序正在请求“admin”范围,则 OAuth 服务器不会创建具有“admin”范围的访问令牌,因为不允许该用户自己使用该范围。...登录到使用 API 的完全不同部分的应用程序的用户希望确保此应用程序无法使用人口统计 API,因为这会导致该用户产生费用。在这种情况下,服务应该定义一个特殊的范围,比如“人口统计”。...用户可能不知道服务提供的所有范围的可能性,因此最好使此文本尽可能清晰明了,避免使用行话和缩写。...很快就开发了一种常见的 Twitter 应用程序反模式,该模式仅使用写入权限来发布推文来宣传该应用程序。

    86130

    django orm 重点大全

    =models.ForeignKey(User_typ) #外键表cc class cc(models.Model): c=models.CharField(max_length=32)....书、出版社、作者,三者之间互相查来查去 1.建立这四个表 #一对一 OneToOne(表名) #一对多 ForeignKey(表名) #多对多 ManyToMany(表名) #建立书表...author = models.OneToOneField("Author") #建立的一对一的关系 2.orm字段必须要知道的一些属性 (0)null 如果为True,Django 将用NULL 来在数据库中存储空值...‘, ‘Sophomore‘), (‘JR‘, ‘Junior‘), (‘SR‘, ‘Senior‘), (‘GR‘, ‘Graduate‘), ) 每个元组中的第一个元素,是存储在数据库中的值...>>> p.get_shirt_size_display() ‘Large 3.orm添加记录,其实重要的是先查到,然后再添加就比较容易了,传说中的三种方式,貌似实际应用中只有save()的方式可以使用

    93140

    Django——图书管理系统(六)

    当然我依旧会在注释中做出一些解释。 现在我们已经有了出版社这张表,现在我们添加书籍这张表。由于出版社和书籍之间是有关系的,我们使用外键来连接两者之间的关系。...书名 publisher_id = models.ForeignKey('Publisher', on_delete=models.CASCADE) # 外键默认关联的是Publisher...级联删除意味着,我删除了某个出版社,那么该出版社对应的所有书籍也被删除。 models.PROTECT:保护,如果某个出版社还有书籍存在,那么就不允许删除该出版社。...models.SET_DEFAULT:表示删除后设为默认值 models.SET_NULL:删除后设为空值 models.SET(x):删除后设为某个值 ''' 增加一张表之后,我们应该执行数据库迁移命令...(max_length=128) # 书名 publisher = models.ForeignKey('Publisher', on_delete=models.CASCADE) 修改了models

    66040

    基于 Django 的手机管理系统

    前段时间和小组一起完成数据库作业,觉得收获挺多的,分享到博客来。...此数据库字段由于是我从 sqlite 迁移到 MySQL 中,Django 自动帮我再生成的字段,所以有些字段名和我在 Django 写的字段不一致,但数据表关系还是一致的。...class Maker(models.Model): name = models.CharField(max_length=10) country = models.CharField(...MySQL 驱动程序这块,刚开始安装 MySQL 官网提供的 mysql-python 这个模块,但在 Python3环境下会报错,原因是mysql-python 模块不支持 Python3版本,所以安装使用...注意在 models.py 文件同级文件中的init.py 修改为: import pymysql pymysql.install_as_MySQLdb() 操作便与 mysql-python 的使用方法一致了

    1.8K40
    领券