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

在django中将作者姓名从文本模型呈现为外键

在Django中,将作者姓名从文本模型呈现为外键可以通过以下步骤实现:

  1. 创建Author(作者)模型:
代码语言:txt
复制
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name
  1. 创建Text(文本)模型,并将作者姓名作为外键:
代码语言:txt
复制
from django.db import models

class Text(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

在上述代码中,我们创建了一个Author模型和一个Text模型。Text模型中的author字段被定义为外键,它引用了Author模型。on_delete=models.CASCADE表示当Author对象被删除时,与之相关联的Text对象也会被删除。

  1. 运行数据库迁移命令,将模型更改应用到数据库中:
代码语言:txt
复制
python manage.py makemigrations
python manage.py migrate
  1. 在视图中使用外键:
代码语言:txt
复制
from django.shortcuts import render
from .models import Text

def text_detail(request, text_id):
    text = Text.objects.get(id=text_id)
    author = text.author
    return render(request, 'text_detail.html', {'text': text, 'author': author})

在上述代码中,我们从数据库中获取了指定id的Text对象,并通过text.author获取了与之关联的Author对象。

  1. 在模板中显示作者姓名:
代码语言:txt
复制
<h1>{{ text.title }}</h1>
<p>Author: {{ author.name }}</p>

在上述代码中,我们使用{{ author.name }}来显示作者的姓名。

这样,我们就成功地将作者姓名从文本模型呈现为外键。在实际应用中,可以根据需要进行进一步的定制和扩展。

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

相关·内容

django模型动态修改参数,增加 filter 字段的方式

其它属性详情请查看:官方文档 关系字段 ForeignKey 类型ORM中用来表示关联关系,一般把ForeignKey字段设置 ‘一对多’中’多’的一方。...through:使用ManyToManyField字段时,Django将自动生成一张表来管理多对多的关联关系。...through_fields=("author", "book")) # through_fields接受一个2元组('field1','field2'): # 其中field1是定义ManyToManyField的模型的名...(author),field2是关联目标模型(book)的键名。...其他属性详情请查看:官方文档 以上这篇django模型动态修改参数,增加 filter 字段的方式就是小编分享给大家的全部内容了,希望能给大家一个参考。

3.8K31

Django ORM 多表操作

目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加) 一对多( ForeignKey) 一对一 (OneToOneFeild) 多对多...ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高的一方 一对多:字段建在多的一方 多对多:字段建在查询频率多的一方,Django第三张表不需要创建...,自动创建 ps:字段不需要写表名_id后面的_id,ORM创建的时候自动添加了_id,以及以虚拟字段的形式存在 创建模型 '''models.py''' from django.db import...6、若有模型类存在外,创建数据时,要先创建关联的模型类的数据,不然创建包含模型类的数据时,的关联模型类的数据会找不到 逆向到表模型 插入数据 ps:插入几条数据方便操作 ORM...,去该表的角度查另外的表,就是正向 反向:从没有表去查另外相关联的表,就是反向 口诀: 正向查询按字段 反向查询按表名小写 注意: 正向:属性名 反向:小写类名加 _set 反向查询的时候查询的对象可能有多个的情况加

1.8K20
  • Django项目知识点(三)

    models.TextField   大量文本内容,HTML中表现为Textarea标签,最常用的字段类型之一!...注意:Django一个模型中只允许有一个自增字段,并且该字段必须为主键!...会在数据库中将此字段的值置为NULL,默认值是False blank 如果为True时django的 Admin 中添加数据时可允许空值,可以不填。...,也可另立主键并将“一”和“多”两表的主键作为关联表的; 多对多的表,则必须设中间关联表,关联表设独立主键,并引入两个“多”头的表的主键作为关联表的。...SET_NULL:此值设置,会把设置为null,前提是允许为null。 SET_DEFAULT:此值设置,会把设置为的默认值。 SET():此值设置,会调用外面的值,可以是一个函数。

    1.9K30

    Django 模型层之多表操作

    models.CharField(max_length=255) price = models.DecimalField(max_digits=5, decimal_places=2) # ...models.ManyToManyField(to=Author) def __str__(self): return self.name 注意事项: 1.id字段不写的话会自动添加 2.对于字段...,Django会在字段名上添加"_id"来创建数据库中的列名 3.字段ForeignKey有一个null=True的设置,你可以赋给它空值None 二.添加表记录 一对一: # 方式一: detail_obj...Django提供了以下聚合函数 1.expression 引用模型字段的一个字符串,或者一个query expression 2.output_field 用来表示返回值的model field...()之前,表示group by,之后,表示为取值 filterannotate()之前,表示过滤,之后,表示having 六.F查询与Q查询 F查询 现在位置的操作种,都是将模型字段与常量进行比较,但是

    1.3K20

    零基础使用Django2.0.1打造在线教育网站(八):数据库字段的定义(下)

    return self.name 接着刚才的代码,我们在下面添加如下内容: # 章节信息 class Lesson(models.Model): # 前面知道一个课程对应多个章节,所以章节表中将课程设置为...(后台管理中显示) 我们继续接着刚才的代码,我们在下面添加如下内容: # 视频信息 class Video(models.Model): # 前面知道一个章节对应多个视频,所以视频表中将章节设置为...self.name) # return self.name也是可以 # 课程资料信息 class CourseResource(models.Model): # 前面知道一个课程对应多个课程资料,所以课程资料表中将课程设置为...logo") address = models.CharField(max_length=150, verbose_name="机构地址") # 前面知道一个城市对应多个课程机构,所以课程机构表中将城市设置为...models.ForeignKey(UserProfile, on_delete=models.CASCADE, verbose_name="用户名") # 前面知道一门课程具有多个课程评论,所以课程评论表中将课程设置为

    86520

    06.Django基础五之django模型层(二)多表操作

    一 创建模型 表和表之间的关系     一对一、多对一、多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加约束和不加约束的区别,一对一的约束是一对多的约束上加上唯一约束...注意事项: 表的名称myapp_modelName,是根据 模型中的元数据自动生成的,也可以覆写为别的名称   id 字段是自动添加的 对于字段,Django 会在字段名上添加"_id" 来创建数据库中的列名...字段 ForeignKey 有一个 null=True 的设置(它允许接受空值 NULL),你可以赋给它空值 None 。   ...但是我们就不能使用ORM相关的方法了,所以我们单纯的将换成一个其他字段类型,只是单纯的存着另外一个关联表的主键值是不能使用ORM方法的。...在这些情况下,我们可以直接访问数据库,完全避开模型层。     我们可以直接django提供的接口中获取数据库连接,然后像使用pymysql模块一样操作数据库。

    2.7K20

    django中ModelForm多表单组合的解决方案

    2、模型创建表单 django对于MVC中的C与M间的映射是非常体贴的,集中体现中Model模型中(比如模型的权限与用户认证)。...fields = ['approvals','manager','name','fund_rource','content','range',]   model中告诉django模型是谁,fields...所以,模型创建出的表单ModelForm,配合上通用视图后,威力巨大!! 4、多个ModelForm一个form里提交 终于可以回到本文的主题了。...django模型中就体现为ForeignKey、ManyToManyField或者OneToOneField。而在业务逻辑上,需要体现为一张表单,对应着数据库里的多张表。...'].save()           #项目表单中获取到模型,先把地址的id赋到外上再保存           project = context['projectForm'].save(commit

    3.4K20

    Django模型

    Django模型 Django模型定义models.py文件中。模型是MVT中的M,也相当于MVC中的M。 Django中,模型必须继承自Model类。... 这个东西,通常都是在业务逻辑层面来实现的,而不是在数据库中实现。但是通常大家学习的数据库课程中,都会有数据库设计范式,其中有个第三范式就是专指的约束。在这里只是简单的介绍一下。...下面是另外一个模型,和前面的BookInfo模型通过关联起来。...choices参数就是我们定义的二元组(GENDER_CHOICES)中获取值。二元组的第一个值会储存在数据库中,而第二个值将只会用于表单中显示。...:通过使用models.ForeignKey来设置,ForeignKey的第一个参数是要关联的模型类名,第二个参数是on_delete。

    1.9K20

    用人话讲解django模型字段认识

    model(模型) 是学习 django 最重要的知识,模型设计的好坏直接影响到你后期的开发,模型的设计只能靠自身经验提高。模型准确且唯一的描述了数据,包含您储存的数据的重要字段和行为。...常见的有 字符串类型 CharField 、文本类型 TextField、整型 IntegerField、浮点型 DecimalField 、日期类型 DateTimeField,表示两张表的关系...# CharField为字符串类型,必须有max_length设置最大长度,verbose_namedjango后 台显示该英文字段的中文意思 # IntegerField整型 # DecimalField...,时间数值不变 # auto_now=True该条数据创建的时间,数据更新时,时间数值也会改变 # ForeignKey一对多,第一个参数位你要关联的数据表,比如一个班级有多个学生,就属于一对多,要放到..."多"的那张表,related_name是对外取别名,常用在django的orm反向查询中使用 项目源地址:https://github.com/zxycode-2020/django_tutrital2

    1.1K10

    Django MVC概述和开发流程

    控制器(Controller) 负责用户获取输入,是应用程序中处理用户交互的部分,通常控制器负责视图读取数据,控制用户输入,并向模型发送数据。...Django中进行数据库开发一般需要三个步骤: 1.应用的models.py中定义模型类 2.迁移 3.通过类和对象完成对数据库的CURD 1.定义模型类 首先添加了一个school_test应用,...数据库中表的命名为应用命_模型类名,而且模型类中添加了则会生成命名为模型类名_id的字段。...() 对象的关联操作,新建学生对象然后插入几条数据: st1 = StudentInfo() st1.name = '张三' st1.age = 18 st1.gender = True # 直接赋值模型类对应的实例对象...模板文件是一种文本文件,主要由html、css等组成,但是除此之外Django模板文件支持特殊的模板语法用于动态替换内容。

    1.8K10

    Django 3.1 官网学习路线

    创建模型 我们的投票应用程序中,我们将创建两个模型: 问题和选择。问题有问题和发布日期。 “选择”具有两个字段:选择的文本和投票提示。...字段还可以有各种可选参数;本例中,我们将投票的默认值设置为 0。 最后,请注意使用定义了关系。这告诉 Django 每个选择都与一个问题相关。...按照惯例,Django 会将"_id"附加到外字段名。(是的,你也可以重写这个。) 关系是通过约束来显式的。...不要担心可延期的部分;它告诉 PostgreSQL 事务结束之前不要强制执行。...“添加选择”表单如下所示: 该表单中,“Question”字段是一个选择框,包含数据库中的每个问题。Django 知道一个应该在管理中表示为一个框。我们的例子中,目前只存在一个问题。

    8.2K10

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

    和表关系 MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持约束的。的存在使得ORM框架在处理表关系的时候异常的强大。...因此这里我们首先来介绍下Django中的使用。 类定义为class ForeignKey(to,on_delete,**options)。...第一个参数是引用的是哪个模型,第二个参数是使用引用的模型数据被删除了,这个字段该如何处理,比如有CASCADE、SET_NULL等。这里以一个实际案例来说明。...因此底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个,记录着对应的作者的主键。...如果一个模型使用了

    4K30

    【愚公系列】2022年01月 Python教学课程 40-Django框架之模型属性详解

    文章目录 一、模型类定义 二、模型类迁移 总结 ---- 一、模型类定义 models.py 文件中定义模型类,示例如下: from django.db import models # Create...,Django默认以小写app应用名_小写模型类名为数据库表名。...2) 关于主键 django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。... 设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理,django.db.models中包含了可选常量: CASCADE级联,删除主表数据时连通一起删除外表中数据...1)生成迁移文件 python manage.py makemigrations 2)同步到数据库中 python manage.py migrate 总结 django开发模型类和字段最好在代码里定义迁移同步到数据库

    1.4K20

    django后台管理-admin

    0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册的app中的admin文件中导入模型然后注册模型 admin.site.register(导入的模型类...) 注册方式二该方法是Django1.7的版本新增的功能: from django.contrib import admin from blog.models import Blog #Blog模型的管理器...#listdisplay设置要显示列表中的字段(id字段是Django模型的默认主键) list_display = ('id', 'caption', 'author', 'publish_time...list_editable 设置默认可编辑字段 list_editable = ['machine_room_id', 'temperature'] #fk_fields 设置显示字段...一般ManyToManyField多对多字段用过滤器;标题等文本字段用搜索框;日期时间用分层筛选。 过滤器如果是需要遵循这样的语法:本表字段__表要显示的字段。

    88010

    【Python全栈100天学习笔记】Day41 Django深入理解框架

    OK 执行完数据模型迁移操作之后,可以通过图形化的MySQL客户端工具查看到E-R图(实体关系图)。 利用Django后台管理模型 Django框架有自带的后台管理系统来实现对模型的管理。...使用ORM完成模型的CRUD操作 了解了Django提供的模型管理平台之后,我们来看看如何代码层面完成对模型的CRUD(Create / Read / Update / Delete)操作。...db_constraint:是否为创建约束,默认值为True。...on_delete:关联的对象被删除时对应的动作,可取的值包括django.db.models中定义的: CASCADE:级联删除。...SET_NULL:把设置为null,当null属性被设置为True时才能这么做。 SET_DEFAULT:把设置为默认值,提供了默认值才能这么做。

    2.3K30

    Django模型最佳实践

    通过“迁移操作”(migrate)来添加模型。 用NoSQL来应对需要降低范式级别的场景。 如果布尔类型可以为空要使用NullBooleanField。 模型中放置业务逻辑。...模型定义参考 字段 对字段名称的限制 字段名不能是Python的保留字,否则会导致语法错误 字段名不能有多个连续下划线,否则影响ORM查询操作 Django模型字段类 字段类 说明 AutoField...db_constraint:是否为创建约束,默认值为True。...on_delete:关联的对象被删除时对应的动作,可取的值包括django.db.models中定义的: CASCADE:级联删除。...SET_NULL:把设置为null,当null属性被设置为True时才能这么做。 SET_DEFAULT:把设置为默认值,提供了默认值才能这么做。

    2.3K40

    1.4 Django基础篇--数据库模型设计

    Category表通过与Acticle表相连,而Tag表与Article之间很特殊。大家会发现很奇怪,为什么设计了三个表,可是上图中却多出了一个Article_has_Tag表。这是为什么呢?...其实这在数据库设计中很常见,描述两个表多对多的关系时,会生成一个中间表,将多对多的关系转化为两个表和中间表一对多的关系,这样可以使用将表联系起来。...author表示文章作者,大家会发现我们使用了,这是因为User是Django内置的数据模型django.contrib.auth.models中导入的,专门用来负责用户信息的处理,本质上User...一个作者可以拥有很多文章,而一篇文章只能有一个作者,是一对多的关系,因此使用和User数据模型 建立联系。...那Django将这些模型的改动翻译成什么样的SQL语句呢?我么可以通过sqlmigrate 命令进行查看。命令行中执行:python manage.py sqlmigrate home 0001。

    1.3K30

    Django---ORM操作大全

    1、无需连表查询性能低,省硬盘空间(选项不固定时用) 2、modle文件里不能动态增加(选项一成不变用Django的choice) 其他字段 db_index = True 表示设置索引 unique...正向查找:ForeignKey UserInfo表中,如果UserInfo表开始向其他的表进行查询,这个就是正向操作,反之如果UserType表去查询其他的表这个就是反向操作。...1对多关系,也称为多对多关系; orm中设置如果 A表设置了字段user=models.ForeignKey('UserType')到B表(注意外表名加引号) 就意味着 写在写A表的B表主键,...','ug_id','ug__title')    #注意正向连表是  __列 反向是小写的表名 3....max_length=64) sex=((1,'男'),(2,'女')) gender=models.IntegerField(choices=sex) '''把男女表混合在一起,代码层面控制第三张关系表的关系

    6.9K100

    Django教程 —— 模型类详解

    引言 之前的 Django模型设计 中简单的介绍了如何定义模型类,在这篇中将做一个汇总。让大家更加了解Django模型类。...: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 管理站点最低限度的验证 Django 会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后...TextField 大文本字段,一般超过 4000 个字符时使用。...关系 定义 备注 一对多 models.ForignKey() 约束 ,定义 ‘多类’ 中 多对多 models.ManyToManyField() 定义在哪一个模型类中都行 一对一 models.OneToOneField...数据表的默认名称为: _ 例: booktest_bookinfo 例如: BookInfo 模型类中添加如下内容,代码如下: from django.db

    1.7K20
    领券