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

Foriegn键显示为下拉列表。有没有办法将其显示为文本值?(django)

在Django中,可以通过使用ModelChoiceField来将Foreign键字段显示为下拉列表。但如果你想将其显示为文本值,可以通过以下步骤实现:

  1. 首先,在你的Django应用的models.py文件中,定义一个新的字段,该字段将作为Foreign键字段的文本值显示。例如,假设你有两个模型:AuthorBook,其中Book模型有一个Foreign键字段指向Author模型。你可以在Book模型中添加一个新的字段,用于显示Author的文本值:
代码语言:txt
复制
class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    author_name = models.CharField(max_length=100, blank=True, null=True)

    def save(self, *args, **kwargs):
        self.author_name = self.author.name
        super().save(*args, **kwargs)

在上面的例子中,我们添加了一个名为author_name的CharField字段,用于存储Author的文本值。在save方法中,我们将author_name字段设置为author字段的name属性。

  1. 接下来,在你的Django应用的forms.py文件中,定义一个新的表单,该表单将使用新的字段来显示Foreign键字段的文本值。例如,对于上面的例子,你可以定义一个BookForm表单:
代码语言:txt
复制
from django import forms
from .models import Book

class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ['author_name']

在上面的例子中,我们定义了一个BookForm表单,并指定了author_name字段作为表单的唯一字段。

  1. 最后,在你的Django应用的views.py文件中,使用新的表单来处理数据。例如,你可以在视图函数中使用BookForm来创建一个新的Book对象:
代码语言:txt
复制
from django.shortcuts import render, redirect
from .forms import BookForm

def create_book(request):
    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            book = form.save(commit=False)
            book.author = Author.objects.get(name=form.cleaned_data['author_name'])
            book.save()
            return redirect('book_list')
    else:
        form = BookForm()
    return render(request, 'create_book.html', {'form': form})

在上面的例子中,我们使用BookForm来处理POST请求,并在表单验证通过后,创建一个新的Book对象。我们从表单的author_name字段中获取作者的文本值,并使用Author.objects.get()方法获取对应的Author对象,然后将其赋值给book对象的author字段。

通过以上步骤,你可以将Foreign键字段显示为文本值而不是下拉列表。请注意,这只是一种实现方式,具体的实现方法可能因你的数据模型和需求而有所不同。

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

相关·内容

35.Django2.0文档

第四章 模板  1.标签 (1)if/else {% if %} 标签检查(evaluate)一个变量,如果这个变量真(即,变量存在,非空,不是布尔假),系统会 显示在 {% if %} 和 {%.... {% endcomment %} 3.过滤器 模板过滤器是在变量被显示前修改它的的一个简单方法。 过滤器使用管道字符, {{ name|lower }} #它功能是转换文本小写。...如果你想选择多项,你必须还要按下Ctrl。 虽然管理工具因此添加了注释(help_text),但是当它有几百个选项时,它依然显得笨拙。 更好的办法是使用 filter_horizontal。...默认地,管理工具使用`` 下拉框`` 来展现`` 外`` 字段。但是,正如`` 多对多字段`` 那样,有时候你不想忍受因装载并显示这些选项而产生的大量开销。...解决这个问题的办法是使用`` raw_id_fields`` 选项。它是一个包含外字段名称的元组,它包含的字段将被展现成`` 文本框`` ,而不再是`` 下拉框`` 。

11.3K100

Python 最强编辑器详细使用指南

如果它无法无法准确识别系统,你可以在右上角的下拉列表中找到合适的系统。 安装成功后,启动该 app 并接受用户协议。在 Tools 选项下,你可以看到一个可用产品列表。...之后,你将看到底部出现 Debug 窗口: 按照下列步骤执行程序 debug: 注意当前行被蓝色高亮显示。 Debug 窗口显示 random_int 及其。记录该数字。...打开下拉列表,选择 Project Interpreter: 从下拉列表中选择 virtualenv。如果没有要选择的项,则点击下拉列表右方的设置按钮选择 Add…。...你可以查看它们的列表,点击 Insert Macro… 按钮将其中一个插入。此处你使用了 macros,它们的会根据你目前处理的项目而改变,Flake8 将继续准确执行其工作。...你可以在文本框中添加喜欢的快捷,然后在两个窗口中点击 OK。然后,你就可以用该快捷,在 Flake8 的帮助下分析目前在处理的文件了。

1.9K00
  • 人生苦短,我用PyCharm

    如果它无法无法准确识别系统,你可以在右上角的下拉列表中找到合适的系统。 ? 安装成功后,启动该 app 并接受用户协议。在 Tools 选项下,你可以看到一个可用产品列表。...按照下列步骤执行程序 debug: 注意当前行被蓝色高亮显示。 Debug 窗口显示 random_int 及其。记录该数字。(上图中该数字 85。)...打开下拉列表,选择 Project Interpreter: ? 从下拉列表中选择 virtualenv。如果没有要选择的项,则点击下拉列表右方的设置按钮选择 Add…。...你可以查看它们的列表,点击 Insert Macro… 按钮将其中一个插入。此处你使用了 macros,它们的会根据你目前处理的项目而改变,Flake8 将继续准确执行其工作。...上图中,快捷是 Ctrl+Alt+A(本教程使用该快捷)。你可以在文本框中添加喜欢的快捷,然后在两个窗口中点击 OK。

    2.6K10

    人生苦短,我用PyCharm

    如果它无法无法准确识别系统,你可以在右上角的下拉列表中找到合适的系统。 ? 安装成功后,启动该 app 并接受用户协议。在 Tools 选项下,你可以看到一个可用产品列表。...按照下列步骤执行程序 debug: 注意当前行被蓝色高亮显示。 Debug 窗口显示 random_int 及其。记录该数字。(上图中该数字 85。)...打开下拉列表,选择 Project Interpreter: ? 从下拉列表中选择 virtualenv。如果没有要选择的项,则点击下拉列表右方的设置按钮选择 Add…。...你可以查看它们的列表,点击 Insert Macro… 按钮将其中一个插入。此处你使用了 macros,它们的会根据你目前处理的项目而改变,Flake8 将继续准确执行其工作。...上图中,快捷是 Ctrl+Alt+A(本教程使用该快捷)。你可以在文本框中添加喜欢的快捷,然后在两个窗口中点击 OK。

    1.8K31

    Python 最强编辑器详细使用指南!

    如果它无法无法准确识别系统,你可以在右上角的下拉列表中找到合适的系统。 ? 安装成功后,启动该 app 并接受用户协议。在 Tools 选项下,你可以看到一个可用产品列表。...按照下列步骤执行程序 debug: 注意当前行被蓝色高亮显示。 Debug 窗口显示 random_int 及其。记录该数字。(上图中该数字 85。)...打开下拉列表,选择 Project Interpreter: ? 从下拉列表中选择 virtualenv。如果没有要选择的项,则点击下拉列表右方的设置按钮选择 Add…。...你可以查看它们的列表,点击 Insert Macro… 按钮将其中一个插入。此处你使用了 macros,它们的会根据你目前处理的项目而改变,Flake8 将继续准确执行其工作。...上图中,快捷是 Ctrl+Alt+A(本教程使用该快捷)。你可以在文本框中添加喜欢的快捷,然后在两个窗口中点击 OK。

    2.4K01

    Python 最强编辑器详细使用教程

    如果它无法无法准确识别系统,你可以在右上角的下拉列表中找到合适的系统。 ? 安装成功后,启动该 app 并接受用户协议。在 Tools 选项下,你可以看到一个可用产品列表。...按照下列步骤执行程序 debug: 注意当前行被蓝色高亮显示。 Debug 窗口显示 random_int 及其。记录该数字。(上图中该数字 85。)...打开下拉列表,选择 Project Interpreter: ? 从下拉列表中选择 virtualenv。如果没有要选择的项,则点击下拉列表右方的设置按钮选择 Add…。...你可以查看它们的列表,点击 Insert Macro… 按钮将其中一个插入。此处你使用了 macros,它们的会根据你目前处理的项目而改变,Flake8 将继续准确执行其工作。...上图中,快捷是 Ctrl+Alt+A(本教程使用该快捷)。你可以在文本框中添加喜欢的快捷,然后在两个窗口中点击 OK。

    2.1K20

    人生苦短,我用PyCharm

    如果它无法无法准确识别系统,你可以在右上角的下拉列表中找到合适的系统。 ? 安装成功后,启动该 app 并接受用户协议。在 Tools 选项下,你可以看到一个可用产品列表。...按照下列步骤执行程序 debug: 注意当前行被蓝色高亮显示。 Debug 窗口显示 random_int 及其。记录该数字。(上图中该数字 85。)...打开下拉列表,选择 Project Interpreter: ? 从下拉列表中选择 virtualenv。如果没有要选择的项,则点击下拉列表右方的设置按钮选择 Add…。...你可以查看它们的列表,点击 Insert Macro… 按钮将其中一个插入。此处你使用了 macros,它们的会根据你目前处理的项目而改变,Flake8 将继续准确执行其工作。...上图中,快捷是 Ctrl+Alt+A(本教程使用该快捷)。你可以在文本框中添加喜欢的快捷,然后在两个窗口中点击 OK。

    2.6K30

    Python 最强 IDE 详细使用指南!

    如果它无法无法准确识别系统,你可以在右上角的下拉列表中找到合适的系统。 ? 安装成功后,启动该 app 并接受用户协议。在 Tools 选项下,你可以看到一个可用产品列表。...按照下列步骤执行程序 debug: 注意当前行被蓝色高亮显示。 Debug 窗口显示 random_int 及其。记录该数字。(上图中该数字 85。)...打开下拉列表,选择 Project Interpreter: ? 从下拉列表中选择 virtualenv。如果没有要选择的项,则点击下拉列表右方的设置按钮选择 Add…。...你可以查看它们的列表,点击 Insert Macro… 按钮将其中一个插入。此处你使用了 macros,它们的会根据你目前处理的项目而改变,Flake8 将继续准确执行其工作。...上图中,快捷是 Ctrl+Alt+A(本教程使用该快捷)。你可以在文本框中添加喜欢的快捷,然后在两个窗口中点击 OK。

    2.5K20

    人生苦短,我用PyCharm

    如果它无法无法准确识别系统,你可以在右上角的下拉列表中找到合适的系统。 ? 安装成功后,启动该 app 并接受用户协议。在 Tools 选项下,你可以看到一个可用产品列表。...按照下列步骤执行程序 debug: 注意当前行被蓝色高亮显示。 Debug 窗口显示 random_int 及其。记录该数字。(上图中该数字 85。)...打开下拉列表,选择 Project Interpreter: ? 从下拉列表中选择 virtualenv。如果没有要选择的项,则点击下拉列表右方的设置按钮选择 Add…。...你可以查看它们的列表,点击 Insert Macro… 按钮将其中一个插入。此处你使用了 macros,它们的会根据你目前处理的项目而改变,Flake8 将继续准确执行其工作。...上图中,快捷是 Ctrl+Alt+A(本教程使用该快捷)。你可以在文本框中添加喜欢的快捷,然后在两个窗口中点击 OK。

    1.8K20

    Python:Django框架

    Field 选项 选项 描述 null boolean ,默认为false。TURE=将NULL空存储到数据库中 blank boolean ,该字段是否可以为空。如果假,则必须有。...boolean ,如果True将为此字段创建索引 default 给当前字段设置默认 editable boolean ,如果false,admin模式下将不能改写。...默认为true error_messages 字典,设置默认的出错信息 help_text admin模式下帮助文档,组件内显示帮助文本。...initial : 初始在字段中显示 help_text: 在字段后面显示定义的帮助文档 error_messages : 是一个字典,错误提示信息 show_hidden_initial : 显示或隐藏初始...unique 是否唯一的 Not null 不能为空 foreign key 指定关键表的外 mysql> use my_db #使用my_db数据库 Database changed mysql

    4.4K40

    datalist标签小结

    二、Datalist中,同样可以为每一个下拉列表选项指定一个value,如下代码: HTML 代码   复制 State: <input type...则用户通过下拉列表选择后,文本框中显示的将会是value的,如下图: 三、Autocomplete属性 该属性可以设置on或off,表示输入字段是否应该启用自动完成功能,如下代码所示: HTML 代码...,下面分别介绍一个折衷的办法 datalist中嵌套使用传统的select下拉选择框 一个不错的解决方法,是在提供传统的select下拉文本框的同时,提供给用户能输入普通文本文本框,如下代码: HTML...,而input文本框中依然绑定了datalist,这样的好处是,当在不支持datalist的浏览器中运行的时候会有上图的效果:一边是下拉选择,另外的是可以允许用户输入下拉列表中不存在的记录。...,就出现下拉建议列表 4)不能控制大小写敏感,或当匹配什么样的字符就出现下拉建议列表 5)不能将其与服务端的数据源绑定

    2.5K50

    【愚公系列】2023年11月 Winform控件专题 TextBox控件详解

    欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...在属性面板中,找到CharacterCasing属性,从下拉列表中选择你需要的选项。...如果该属性设置False,则文本将在单行上显示,并且任何超出文本框的部分将被隐藏。在Design视图中,您可以在Properties窗口中找到WordWrap属性并将其设置True或False。...在Visual Studio的设计器中,选择控件后,在属性窗口中找到TextAlign属性,可以通过下拉列表选择对齐方式。...SuggestAppend: 表示启用自动完成功能并且在用户输入时弹出一个下拉框,显示与当前输入匹配的内容。当用户从下拉框中选择一个项时,这个项的内容自动添加到文本框中。

    50723

    Office 2007 实用技巧集锦

    Word有个好办法可以自动将这一页省掉,只需在【快速访问工具栏】旁边的下拉菜单中选择【其他命令】,在从下列位置选择命令中选中【所有命令】,在下拉菜单中找到【减少一页】功能按钮,将其添加到右侧的快速访问工具栏列表中...选中需要整理的数据区域,选择【开始】选项卡中的【条件格式】,在【突出显示单元格规则】中选择【重复】,这样就能够快速把重复进行高亮显示。...而且这样格式的单元格里面存储的依然是数字,依然可以做运算! Excel中编辑过长文本 在Excel的单元格中编辑超长文本或者很长的公式的时候,编辑界面只能显示在一行会让使用者很不舒服。...在【后续标志】的下拉菜单中,选择【添加提醒】,可以在弹出的对话框中选择自己添加提醒还是收件人添加提醒,并且可以设定提醒的具体时间,这样就不怕遗忘重要任务啦!...在【开始】选项卡中选择【查找和选择】,在下拉列表中选择【选择窗格】,这样就会在右侧显示出一个任务窗格,幻灯片中的对象便一目了然了。在选择窗格中可以对各个对象进行显示/隐藏,调整层次顺序等操作。

    5.1K10

    Office 2007 实用技巧集锦

    Word有个好办法可以自动将这一页省掉,只需在【快速访问工具栏】旁边的下拉菜单中选择【其他命令】,在从下列位置选择命令中选中【所有命令】,在下拉菜单中找到【减少一页】功能按钮,将其添加到右侧的快速访问工具栏列表中...选中需要整理的数据区域,选择【开始】选项卡中的【条件格式】,在【突出显示单元格规则】中选择【重复】,这样就能够快速把重复进行高亮显示。...而且这样格式的单元格里面存储的依然是数字,依然可以做运算! Excel中编辑过长文本 在Excel的单元格中编辑超长文本或者很长的公式的时候,编辑界面只能显示在一行会让使用者很不舒服。...在【后续标志】的下拉菜单中,选择【添加提醒】,可以在弹出的对话框中选择自己添加提醒还是收件人添加提醒,并且可以设定提醒的具体时间,这样就不怕遗忘重要任务啦!...在【开始】选项卡中选择【查找和选择】,在下拉列表中选择【选择窗格】,这样就会在右侧显示出一个任务窗格,幻灯片中的对象便一目了然了。在选择窗格中可以对各个对象进行显示/隐藏,调整层次顺序等操作。

    5.4K10

    Django项目知识点(三)

    DateTimeField DateTimeField.auto_now 这个参数的默认false,设置true时,能够在保存该字段时,将其设置当前时间,并且每次修改model,都会自动更新。...DateTimeField.auto_now_add 这个参数的默认False,设置True时,会在model对象第一次被创建时,将字段的设置创建时的时间,以后修改对象时,字段的不会再更新...会在数据库中将此字段的NULL,默认是False blank 如果True时django的 Admin 中添加数据时可允许空,可以不填。...会select box代替普通的文本框, 并且限定choices的是元组中的 GENDER_CHOICE = ( (u'M', u'Male'), (...PROTECT:此设置,是会报完整性错误。 SET_NULL:此设置,会把外设置null,前提是允许null。 SET_DEFAULT:此设置,会把设置的默认

    1.9K30

    关于“Python”Django 管理网站的核心知识点整理大全52

    我们需要告诉Django,默认应使用哪个属性来显示有关主题的信息。Django调用方法 __str__()来显示模型的简单表示。...例如,Django并不存储你输入的密码,而存储 从该密码派生出来的一个字符串——散列。每当你输入密码时,Django都计算其散列 ,并将结果与存储的散列进行比较。...最后,方法__str__()告诉Django,呈现条目时应显示哪些 信息。由于条目包含的文本可能很长,我们让Django显示text的前50个字符(见5)。...你将看到一个下拉列表,让你能够选择要为哪个主题创建条目, 还有一个用于输入条目的文本框。从下拉列表中选择Chess,并添加一个条目。下面是我添加的 第一个条目。...在这里,你将发现使用text[:50]作为条目的 字符串表示的好处:管理界面中,只显示了条目的开头部分而不是其所有文本,这使得管理多个 条目容易得多。

    16410

    关于“Python”的核心知识点整理大全56

    在3处,我们显示表单,从中可知Django使得完 成显示表单等任务有多简单:我们只需包含模板变量{{ form.as_p }},就可让Django自动创建显 示表单所需的全部字段。...小部件(widget)是一个HTML表单元素,如单行文本框、 多行文本区域或下拉列表。通过设置属性widgets,可覆盖Django选择的默认小部件。...通过让 Django使用forms.Textarea,我们定制了字段'text'的输入小部件,将文本区域的宽度设置80 列,而不是默认的40列。...P\d+)捕获一个数字,并将其存储在变量topic_id中。请 求的URL与这个模式匹配时,Django将请求和主题ID发送给函数new_entry()。 3....我们将new_entry的属性topic设置在这个 函数开头从数据库中获取的主题(见6),然后调用save(),且不指定任何实参。这将把条目保 存到数据库,并将其与正确的主题相关联。

    13510

    django 的form规则组件的笔记(附代码)

    目录 1 为什么要使用这个 2 form案例 3 form 自定义错误信息 4 form内部原理 5 ajax传 6 返回数据json格式 7 验证格式错误 8 自定义正则表达式 9 form 内置字段...,就是自定义的错误信息 4 form内部原理 5 ajax传 6 返回数据json格式 前端ajax进行接收 7 验证格式错误 1 比如要验证前端传过来的是不是数字 2 验证邮箱...form_model.ModelChoiceField(queryset=models.NNewType.objects.all()) 10.1 RadioSelect (单选框) # 单radio,字符串...choices=((1, '上海'), (2, '北京'),), # initial=2, # widget=widgets.Select # ) # 多选select,列表...# 单checkbox # user = fields.CharField( # widget=widgets.CheckboxInput() # ) # 多选checkbox,列表

    97410

    HTML

    · 标签(停工有关页面的元消息)的组成:meta标签共有两个属性丶它们分别是http-equiv和name属性· 1·name属性 name属性主要用于描述网页丶与之对应的属性content...2丶http-equiv属性 http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确的显示网页内容丶与之对应的属性content丶content...dise:实心圆(默认) circle:空心圆 square:实心方块 三丶上下层列表标签:........表单提交项的 size                  选项个数 multiple            multiple           下拉选中的每一项 属性:value:表单提交项的...selected: selected下拉选默认被选中      每一项加上分组 文本域 : name:表单提交项的. cols:文本域默认有多少列 rows

    2K20

    Django项目于之在线教育平台网站的实战开发(完结)

    = ['students', 'click_nums', 'fav_nums'] 刷新页面则,指定只读的字段则显示在页面底部 4.在xadmin后台中不显示某些字段 在注册类中添加exclude属性的即可...5.增加课程时修改外选择的样式 增加一门课程,需要通过下拉框来选择对应课程的机构,当数据庞大时,使用下拉框就没有搜索框来的方便 在organization/adminx中找到外所指向的注册类,...添加新的课程使用富文本编辑器 查看课程列表,在刚新增的课程详情页中显示全是HTML代码 在进入课程详情后,详情页面显示出转义的内容 需要在course-detail模板中找到课程详情数据块,对数据块内容进行转义关闭...6.安装nginx 说明:安装过程不用演示,很简单 因博主在之前Django电商项目中已经安装过了所以这里不用安装,并且ngin.conf配置文件中的配置Django电商项目的配置;在Django...(分页和筛选以及排序) 机构详情(收藏和富文本编辑) 咨询提交(modelform验证和保存) 5.课程功能 课程列表(分页和排序) 课程详情(收藏丶章节展示丶资源展示丶评论) 6.讲师功能 讲师列表(

    1.2K30
    领券