首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在当前模型的获取绝对url django中获取另一个模型的pk值

在Django中,可以通过以下步骤获取另一个模型的主键(pk)值:

  1. 首先,在当前模型中,确保已经建立了与另一个模型的关联关系。这可以通过外键(ForeignKey)或一对一关系(OneToOneField)来实现。假设当前模型为ModelA,与之关联的另一个模型为ModelB。
  2. 在ModelA的视图函数或方法中,首先获取到ModelA的实例对象。假设该实例对象为model_a_instance。
  3. 使用关联字段的名称,通过实例对象的属性来获取关联模型的实例对象。假设关联字段的名称为model_b,可以通过model_a_instance.model_b来获取关联模型ModelB的实例对象。
  4. 通过关联模型的实例对象,可以获取到其主键(pk)值。假设关联模型ModelB的主键字段名称为id,可以通过model_a_instance.model_b.id来获取ModelB的主键值。

以下是一个示例代码:

代码语言:txt
复制
# models.py
from django.db import models

class ModelB(models.Model):
    # ModelB的字段定义

class ModelA(models.Model):
    model_b = models.ForeignKey(ModelB, on_delete=models.CASCADE)
    # ModelA的其他字段定义

# views.py
from django.shortcuts import get_object_or_404
from .models import ModelA

def get_model_b_pk(request, model_a_id):
    model_a_instance = get_object_or_404(ModelA, pk=model_a_id)
    model_b_instance = model_a_instance.model_b
    model_b_pk = model_b_instance.id
    return model_b_pk

在上述示例中,get_model_b_pk函数接收一个请求对象和ModelA的主键值(model_a_id),通过get_object_or_404函数获取ModelA的实例对象。然后,通过实例对象的model_b属性获取关联模型ModelB的实例对象,最后通过id属性获取ModelB的主键值。

这种方法适用于在Django中获取另一个模型的主键值。关于Django的更多信息和相关产品,您可以参考腾讯云的Django产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何Django中使用单行查询来获取关联模型数据

Django ,你可以使用单行查询来获取关联模型数据。...下面是一些示例:1、问题背景 Django ,我们经常需要查询关联模型数据。传统方法是使用外键关系来获取关联模型数据,这需要进行两次数据库查询。...2.1 使用 select_related()select_related() 可以将关联模型数据直接加载到主模型,这样就可以一次数据库查询获取到所有需要数据。...2.3 代码例子以下是一个完整代码例子,演示如何使用 select_related() 和 prefetch_related() 来获取关联模型数据:from django.db.models import...你可以根据自己需求选择合适方法。使用这些方法之一,我们可以单行代码获取关联模型数据。这些方法可以帮助你优化数据库查询并减少不必要查询次数,提高 Django 应用程序性能。

6210

Django实战-信息资讯-订单视图

Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...完成了订单基础模型,接下来是编写订单视图,订单页和订单支付。 ① 订单视图 相对于之前电商项目的订单视图Django实战-生鲜电商-订单支付,本次更简单,实现上也是直接从数据库查询所有的订单。...:模板获取当前url信息,确保项目配置里context_processors 包含django.template.context_processors.request。...从 Django 1.9 开始, 默认是已经配置。 ?...获取当前位置: request.path 获取带有 querystring URL: request.get_full_path 获取完全绝对路径: request.build_absolute_uri

55120

django 1.8 官方文档翻译: 3-1-3 Django 快捷函数

如果字典某个是可调用,视图将在渲染模板之前调用它。 Django 1.8 改变: context 参数之前叫做dictionary。...这个名字Django 1.8 废弃并将在Django 2.0 删除。 context_instance 渲染模板上下文实例。...current_app 指示哪个应用包含当前视图。更多信息,参见带命名空间URL 解析。 版本1.8 以后废弃: 废弃current_app 参数。...Changed in Django 1.8: context 参数之前叫做dictionary。 这个名字Django 1.8 废弃并将在Django 2.0 删除。...参数可以是: 一个模型:将调用模型get_absolute_url() 函数 一个视图,可以带有参数:将使用urlresolvers.reverse 来反向解析名称 一个绝对或相对URL,将原样作为重定向位置

80220

基于类通用视图:ListView 和 DetailView

将 index 视图函数改写为类视图 针对这种从数据库获取某个模型列表数据(比如这里 Post 列表)视图,Django 专门提供了一个 ListView 类视图。... Django URL 模式配置方式就是通过 url 函数将 URL 和视图函数绑定。...首先是需要根据从 URL 捕获分类 id(也就是 pk获取分类,这和 category 视图函数过程是一样。...所以我们使了 self.kwargs.get('pk') 来获取URL 捕获分类 id 。...DetailView 除了从数据库获取模型列表数据外,从数据库获取模型一条记录数据也是常见需求。比如查看某篇文章详情,就是从数据库获取这篇文章记录然后渲染模板。

2.6K70

Django 官方推荐姿势:类视图

将 index 视图函数改写为类视图 针对这种从数据库获取某个模型列表数据(比如这里 Post 列表)视图,Django 专门提供了一个 ListView 类视图。... Django URL 模式配置方式就是通过 url 函数将 URL 和视图函数绑定。...首先是需要根据从 URL 捕获分类 id(也就是 pk获取分类,这和 category 视图函数过程是一样。...所以我们使了 self.kwargs.get('pk') 来获取URL 捕获分类 id 。...DetailView 除了从数据库获取模型列表数据外,从数据库获取模型一条记录数据也是常见需求。比如查看某篇文章详情,就是从数据库获取这篇文章记录然后渲染模板。

1.3K20

Django搭建blog网站(二)

函数就这么简单,但目前它还只是一个纯 Python 函数,Django 模板还不知道该如何使用它。...两个括号括起来地方是两个命名组参数,Django 会从用户访问 URL 自动提取这两个参数,然后传递给其对应视图函数。...pk (也就是被访问分类 id )从数据库获取到这个分类。...auto_now_add 作用是,当评论数据保存到数据库时,自动把 created_time 指定为当前时间。...包括如何编写模型(Model)、如何编写视图函数(View)、如何使用 Django 内置模板系统(Template)以及如何配置路由(URL),这四大模块是 Django 开发核心所在,现在我们已经能够基本掌握这些模块使用方法了

4.5K100

如何使用Django构建现代Web应用程序来管理客户信息并在Ubuntu 18.04上进行反应

Django,一个免费开源Python Web框架,遵循模型视图控制器(MVC)软件架构模式。 Django REST框架,一个功能强大且灵活工具包,用于Django构建REST API。...您可以按照如何在安装PPA时Ubuntu 18.04上安装Node.js说明安装它们。...API消耗方面,DjangoREST框架一个串行器允许将复杂模型实例和查询集转换成JSON格式。...序列化程序类也可以另一个方向上工作,提供将数据解析和反序列化为Django模型和QuerySets机制。...方法体,我们使用request.method变量来检查当前HTTP方法,并根据请求类型执行相应逻辑: 如果是GET请求,则该方法使用Django Paginator对数据进行分页,并返回序列化后第一页数据

13.9K83

评论

,如果你忘了怎么做,再回顾一下 创建 Django 博客数据库模型 做法。...auto_now_add 作用是,当评论数据保存到数据库时,自动把 created_time 指定为当前时间。...我们知道每一个 URL 对应着一个 Django 视图函数,于是 Django 调用这个视图函数,我们视图函数写上处理用户通过表单提交上来数据代码,比如验证数据合法性并且保存数据到数据库,...如果接收一个模型实例,那么这个实例必须实现了 get_absolute_url 方法,这样 redirect 会根据 get_absolute_url 方法返回 URL 进行重定向。...但既然我们已经有了一个 Post 模型实例 post(它对应是 Post 在数据库一条记录),那么获取和 post 关联评论列表有一个简单方法,即调用它 xxx_set 属性来获取一个类似于

3.1K60

django之评论系统及多级评论

,如果你忘了怎么做,再回顾一下 创建 Django 博客数据库模型 做法。...auto_now_add 作用是,当评论数据保存到数据库时,自动把 created_time 指定为当前时间。...我们知道每一个 URL 对应着一个 Django 视图函数,于是 Django 调用这个视图函数,我们视图函数写上处理用户通过表单提交上来数据代码,比如验证数据合法性并且保存数据到数据库,...如果接收一个模型实例,那么这个实例必须实现了 get_absolute_url 方法,这样 redirect 会根据 get_absolute_url 方法返回 URL 进行重定向。...但既然我们已经有了一个 Post 模型实例 post(它对应是 Post 在数据库一条记录),那么获取和 post 关联评论列表有一个简单方法,即调用它 xxx_set 属性来获取一个类似于

6.8K61

测试开发进阶(二十四)

GET具体内容 校验前端传递pk(项目ID),类型是否正确(正整数),在数据库是否存在等「先省略」 获取指定pk项目 将模型类转化为字典,然后返回 # projects/views.py class...PUT具体内容 校验前端传递pk(项目ID),类型是否正确(正整数),在数据库是否存在等「先省略」 获取指定pk项目 从前端获取json格式数据,转化为Python类型 为了严谨性,这里需要做各种复杂校验...DELETE 校验前端传递pk(项目ID),类型是否正确(正整数),在数据库是否存在等「先省略」 获取指定pk项目 删除 def delete(self, request, pk):...): # 1.校验前端传递pk(项目ID),类型是否正确(正整数),在数据库是否存在等「先省略」 # 2.获取指定pk项目 project =...): # 1.校验前端传递pk(项目ID),类型是否正确(正整数),在数据库是否存在等「先省略」 # 2.获取指定pk项目 project =

1K50

django基础之二

Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当时候调用Model和Template        此外,Django还有一个url分发器,它作用是将一个个...{'pk':11}) {% url 'app01:detail' pk=12 pp=99 %} django路由系统和其他语言框架有所不同,django每一个请求url都要有一条路由映射,这样才能将请求交给对一个...通过反射机制,为django开发一套动态路由系统Demo: 点击下载 五、模板: 1、模版执行 模版创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 获取数据插入到模版...my_simple_time 1 2 3%} {% my_input 'id_username' 'hide'%} e、settingsINSTALLED_APPS配置当前app,不然django...唯一可读写属性,代表当前会话字典对象;自己有激活Djangosession支持时该属性才可用。

1.6K40

浅谈django不使用restframework自定义接口与使用区别

1.定义我们需要模型类,并且在对应模型定义对应将对象转化为字典函数 from django.db import models class Questionnaire(models.Model...related_name=’questions’所以可以通过self.questions.all()来查看当前问卷所有问题。...,将每一个问卷对象通过自定义函数转化为字典,最后返回json数据,同样处理post请求添加问卷时,首先获取到问卷标题,然后实例化一个问卷对象,再将问卷对象保存。...,并不能返回它所关联外键属性字段,要想获取其他关联模型数据就得定义另外类视图,那么对应url也需要配置。...但是同样它好处在于快速,代码简洁易懂,只不过是获取不同模型数据需要定义不同接口,不能像自定义接口那样定义一个接口可以获得其他模型数据。

76730

Django | allauth】重写allauth重置密码方法

二、重写表单模型 form.py 添加表单模型 (处理手机号) from django import forms # 重写重置密码表单 class ResetPasswordForm(forms.Form...,如果获取不到会报错,所以这里使用filter 获取失败返回空对象列表 UserProfile筛选符合条件用户,返回用户名 """...token生成实在allauth里面,不是django自带得token生成器 from allauth.account.utils import user_pk_to_url_str from allauth.account.views...(user), key=temp_key), ) # 根目录下建立绝对路径(self = request) url = HttpRequest.build_absolute_uri...: 引入 扩展模型应用路由时 allauth应用 和 userprofile 谁在上方一定要考虑好,不然路由覆盖等会出现页面失效或者报错情况!!

1.4K20

【愚公系列】2022年04月 Python教学课程 70-DRF框架之视图集

ViewSet,没有提供任何动作action方法,需要我们自己实现action方法。...获取单一图书数据 :param request: :param pk: :return: """ # 1、根据pk查询图书对象...获取queryset属性所有数据 books = self.get_queryset() # 2、提取所有对象字段内容 # 初始化生成序列化器对象..."" # 1、根据pk查询图书对象 try: # self.get_object()从queryset获取当前pk所对应数据对象..."""经过上面的处理,我们就已经把所有视图方法写在一个类中了,但是继承父类有点多 所以,drf里面提供了模型视图集[ModelViewSet],可以一次性提供5个api接口方法 最后,def还提供了只读模型视图集

1.6K30

django模型

每个模型对 应数据库唯一一张表 如何编写模型 模型:每个模型都用一个类表示,该类继承自django.db.models.Model。...True,Django将用NULL来在数据库存储空 默认:False 字段选项——blank 如果为True , 该字段允许不填 默认:False null是纯数据库范畴,而blank是数据验证范畴...,可以是一个或者调用对象 字段选项——primary_key 如果为True,那么这个字段就是模型主键 字段选项——unique 如果该设置为True,这个字段整张表必须是唯一 模型meta...模型添加class Meta是完全可选,所有选项都不是必须。...最后结果仍然是一个查询集,它包含标题以”What“开 头、发布日期2005年1月30日至当天之间所有记录 过滤后查询集是独立 每次你筛选一个查询集,得到都是全新另一个查询集,它和之前查询集之间没有任何绑

3.1K20
领券