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

如何在modelform中显示flask外键字段的可读性显示下拉列表?

在Flask中,可以通过使用WTForms和Flask-WTF插件来创建和处理表单。当使用ModelForm来生成表单时,可以使用QuerySelectField字段来处理外键字段的可读性显示下拉列表。

下面是如何在ModelForm中显示Flask外键字段的可读性显示下拉列表的步骤:

  1. 首先,确保你已经安装了必要的插件:Flask-WTF和WTForms。可以通过在终端中运行以下命令来安装它们:
代码语言:txt
复制
pip install flask-wtf wtforms
  1. 在你的Flask应用中创建一个新的表单类,继承自FlaskForm,并导入QuerySelectField
代码语言:txt
复制
from flask_wtf import FlaskForm
from wtforms import QuerySelectField
from your_app.models import ForeignModel  # 导入外键模型

class MyForm(FlaskForm):
    foreign_field = QuerySelectField('Foreign Field', query_factory=lambda: ForeignModel.query, get_label='name')

在上面的代码中,foreign_field是外键字段的名称,query_factory参数是一个返回查询结果的函数,用于填充下拉列表。get_label参数用于指定显示在下拉列表中的字段名称。

  1. 在视图函数中创建表单实例并传递给模板:
代码语言:txt
复制
from flask import render_template
from your_app.forms import MyForm

@app.route('/create', methods=['GET', 'POST'])
def create():
    form = MyForm()
    if form.validate_on_submit():
        # 处理表单提交逻辑
        pass
    return render_template('create.html', form=form)

在上面的代码中,创建了一个MyForm实例,并传递给名为create.html的模板。

  1. 在模板文件create.html中,可以使用form.foreign_field来渲染下拉列表:
代码语言:txt
复制
<form method="POST">
    {{ form.hidden_tag() }}
    {{ form.foreign_field.label }} {{ form.foreign_field }}
    <button type="submit">Submit</button>
</form>

通过上述步骤,你就可以在ModelForm中显示外键字段的可读性显示下拉列表了。

对于腾讯云相关产品,由于要求不能提及具体品牌商,因此无法给出推荐的产品和链接地址。但你可以根据腾讯云提供的文档和产品列表,选择适合你的需求的云计算产品。

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

相关·内容

django自定义非主键自增字段类型详解(auto increment field)

,这个字段可以是主键,也可以不是主键,如果不是主键,则必须设置为一种“(key)” # (primary key)也是(key)一种,key还包括(foreign key)、唯一(unique...多对多:在某表创建一行数据是,有一个可以多选下拉框 例如:创建用户信息,需要为用户指定多个爱好 一对一:在某表创建一行数据时,有一个单选下拉框(下拉内容被用过一次就消失了 例如:原有含10...(表名__字段名=1).values('表名__字段名') limit_choices_to=None, # 在Admin或ModelForm显示关联数据时,提供条件: # : - limit_choices_to...parent_link=False # 在Admin是否显示关联数据 OneToOneField(ForeignKey) to, # 要进行关联表名 to_field=None # 要关联字段名称..., # 在Admin或ModelForm显示关联数据时,提供条件: # : - limit_choices_to={'nid__gt': 5} - limit_choices_to=lambda

2.3K10

Django进阶知识

数据库字段【年】部分是否可以建立唯一索引 verbose_name Admin显示字段名称 blank Admin是否允许用户输入为空...Admin显示选择框内容,用不变动数据放在内存从而避免跨表操作 :gf = models.IntegerField(choices=[(0, '...Django Admin错误信息会优先根据Admiin内部ModelForm错误信息提示,如果都成功,才来检查Model字段显示指定错误信息 b....多对多:在某表创建一行数据是,有一个可以多选下拉框 例如:创建用户信息,需要为用户指定多个爱好 一对一:在某表创建一行数据时,有一个单选下拉框(下拉内容被用过一次就消失了 例如:原有含10...在Admin或ModelForm显示关联数据时,提供条件: #

3.6K20
  • 【云+社区年度正文】Django从入门到精通No.2----模型

    1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个操作,即ForeignKey字段,而且要定义在多一方。...=None,# 反向操作时,使用连接前缀,用于替换【表名】 limit_choices_to=None, # 在Admin或ModelForm显示关联数据时,提供条件,字典类型...db_constraint=True # 是否在数据库创建约束 parent_link=False # 在Admin是否显示关联数据 2.多对多 多对多表...,必须设中间关联表,关联表设独立主键,并引入两个“多”头主键作为关联表。...=None # 自定义第三张表时,使用字段用于指定关系表那些字段做多对多关系表 db_constraint=True # 是否在数据库创建约束

    2.1K00

    Flask Web 极简教程(四)- Flask WTF Froms(Part A)

    pip3 install Flask-WTF 在Pycharm创建新Flask项目flask-wtf,要使用Flask-WTF需要在app.py创建Flask对象之后添加如下配置, # 配置WTF...属性名 属性作用 label form表单label标签,输入框前文字描述 default 表单输入框默认值 validators 表单验证规则 widget 定制界面的显示方式 description...在表单用户名和密码输入框输入数据 可以看出密码是非明文显示 表单模型字段类型 在第一个表单模型中使用了两个字段类型,分别是StringField和PasswordField,并且在页面输入密码是也能够将密码以非明文形式显示...,除了这两个类型还有其他字段类型, 文本/字符串相关类型 StringField,字符串输入 PasswordField,密码输入 TextAreaField,长文本输入 HiddenField,隐藏表单域...,文件单选 MultipleFileField,文件多选 其他类型 SubmitField,提交表单按钮 FieldList,自定义表单选择列表 FormField,自定义多个字段构成选项

    3.1K20

    Flask Web 极简教程(四)- Flask WTF Froms

    pip3 install Flask-WTF在Pycharm创建新Flask项目flask-wtf,要使用Flask-WTF需要在app.py创建Flask对象之后添加如下配置,# 配置WTFCSRF...labelform表单label标签,输入框前文字描述default表单输入框默认值validators表单验证规则widget定制界面的显示方式description帮助文字在app.py...在表单用户名和密码输入框输入数据 可以看出密码是非明文显示表单模型字段类型在第一个表单模型中使用了两个字段类型,分别是StringField和PasswordField,并且在页面输入密码是也能够将密码以非明文形式显示...,除了这两个类型还有其他字段类型,文本/字符串相关类型 StringField,字符串输入PasswordField,密码输入TextAreaField,长文本输入HiddenField,隐藏表单域数值类型既整数和小数相关类型...,文件多选其他类型 SubmitField,提交表单按钮FieldList,自定义表单选择列表FormField,自定义多个字段构成选项

    3.9K20

    Python自动化开发学习-Django

    修改管理方法 继续在类里添加下面的属性,这里只能把加进去: raw_id_fields = ('dept',) 原本位置是一个下拉select列表,现在变成了input框,...如果是多对多,需要用这个: filter_horizontal = () # 这里并没有多对多字段,就空着吧 这个效果可以参考用户权限分配里用户组合用户权限操作,多选情况这么设置可以有更好体验...', 'gender', 'dept') 这里要搭配list_display一起用,就是显示出来列表,哪些字段是可以直接在列表修改,这种就不用一个一个点进去改了。...test_action(self): pass 此时再打开表,查看Action下拉列表就能看到自定制方法名称了。...更加详细用户信息,就做一个一对一,也就是下面的UserProfile表,来记录自己更加详细用户信息。 这里另起炉灶,重新建2张表,和上面的讲每关系了。

    1.8K30

    Django 系列博客(十三)

    数据库字段默认值 primary_key 数据库字段是否为主键 db_index 数据库字段是否可以建立索引 unique 数据库字段是否可以建立唯一索引...数据库字段【年】部分是否可以建立唯一索引 verbose_name Admin显示字段名称 blank Admin是否允许用户输入为空 editable...Admin是否可以编辑 help_text Admin字段提示信息 choices Admin显示选择框内容,用不变动数据放在内存从而避免跨表操作...ForeignKey 类型在ORM中用来表示关联关系,一般把ForeignKey字段设置在 '一对多''多'一方。...publish = ForeignKey(Blog, related_name='booklist') db_constraint 是否在数据库创建约束,默认为 True。

    1.1K30

    Django ModelForm操作及验证方式

    如果你想禁用这个行为,请设置form标签novalidate属性,或者制定一个不同字段TextInput。...(也可以自定义字段) localized_fields=('birth_date',) # 本地化,:根据不同时区显示数据 : 数据库 2016-12-27 04:10:57 setting配置...} # localized_fields=('ctime',) # 哪些字段做本地化 4、ModelForm 数据库操作 4.1、创建数据save 如果数据验证是ok,那么save,就直接在数据库创建完数据了...views.py def user_list(request): li = models.UserInfo.objects.all().select_related('user_type') # 这里只能是...钩子、额外字段 数据验证钩子 从上面的Form和ModelForm,他们都是继承了BaseForm,而is_valid是在BaseForm定义,所以ModelForm也能和Form一样使用各种钩子

    1.3K10

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

    在3处,我们显示表单,从中可知Django使得完 成显示表单等任务有多简单:我们只需包含模板变量{{ form.as_p }},就可让Django自动创建显 示表单所需全部字段。...新类EntryForm继承了forms.ModelForm,它包含Meta类指出了表单基于模型以及要在表单包含哪些字段。这里也 给字段'text'指定了一个空标签(见1)。...小部件(widget)是一个HTML表单元素,单行文本框、 多行文本区域或下拉列表。通过设置属性widgets,可覆盖Django选择默认小部件。...在7处,我们将用户重定向到显示相关主题页面。调用reverse()时,需要提供两个实参: 要根据它来生成URLURL模式名称;列表args,其中包含要包含在URL所有实参。...接下来,调用HttpResponseRedirect()将用户重定向到 显示新增条目所属主题页面,用户将在该页面的条目列表中看到新添加条目。 4.

    13510

    DjangoORM操作

    1、无需连表查询性能低,省硬盘空间(选项不固定时用) 2、在modle文件里不能动态增加(选项一成不变用Djangochoice) 其他字段 db_index = True 表示设置索引 unique.....关联表字段,values(字段__关联表字段) 多对多:字段.all() 反向连表操作总结: 通过value、value_list、fifter 方式反向跨表:小写表名...,ForeignKey字段就建在子表; 如果B表1条记录也对应A表N条记录,两表之间就是双向1对多关系,也称为多对多关系; 在orm设置如果 A表设置了字段user=models.ForeignKey...点到天荒地老 所以可以通过obj..B表列表跨表操作(注意!!...:小写表面 _set().all() 2、通过 value 和 value_list 方式反向跨表:小写表名__字段 小写表名_set 得到有关系对象 obj = UserGroup.objects.all

    4.8K10

    flask_admin使用教程

    如果模型数据太多,无法在列表视图中显示,则可以通过设置以下内容添加只读详细信息视图: can_view_details = True 从列表视图中删除列很容易,只需为列传递列名称列表“不包括..., 'last_name'] 或者,让添加和编辑表单显示列表模式窗口中,而不是专用创建和编辑页面: create_modal = True edit_modal = True...' } } 当表单包含时,通过Ajax加载这些相关模型,使用: form_ajax_refs = { 'user': { 'fields': ['first_name...,以及一个包含到三个视图链接下拉列表。...要在这些下拉列表嵌套相关视图,请使用添加子类别方法: admin.add_sub_category(name="Links", parent_name="Team") 并向菜单添加任意超链接:

    4.2K20

    Django---ORM操作大全

    ..关联表字段,values(字段__关联表字段) 多对多:字段.all() 反向连表操作总结:  通过value、value_list、fifter 方式反向跨表:小写表名__关联表字段...一对一:在某表创建一行数据时,有一个单选下拉框(下拉内容被用过一次就消失了 例如:原有含10列数据一张表保存相关信息,经过一段时间之后,10列无法满足需求,需要为原来表再添加5列数据 1、...1对多关系,也称为多对多关系; 在orm设置如果 A表设置了字段user=models.ForeignKey('UserType')到B表(注意外表名加引号) 就意味着 写在写A表B表主键,...点到天荒地老 所以可以通过obj..B表列表跨表操作(注意!!...去重之后显示, 2次单表查询(有几个做几次1+N次单表查询, 适用场景:效率高,数据量大时候试用 obj_list=models.Love.objects.all().prefetch_related

    6.9K100

    Django框架学习(三)

    ,返回渲染之后完整html页面,客户端只是显示。...为了更好可读性,建议给endblock标签写上名字,这个名字与对应block名字相同。父模板也可以使用上下文中传递过来数据。...a)Django使用模板变量时候,无论是字典、列表或元组元素,都需要使用.不能使用[],字典是.key,元组和列表是.index下标;这是和flask有区别的地方。...AutoField选项使用 unique 如果为True, 这个字段在表必须有唯一值,默认值是False 在设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理...,在django.db.models包含了可选常量: CASCADE 级联,删除主表数据时连通一起删除外数据 PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被应用数据

    1.8K40

    Django学习之八:forms组件【对

    这个拿到是一个错误集合(或者说错误列表),通过访问改错误列表才能拿到错误。其它拿错误方式也是一样。 forms对象在template渲染是不会有标签。...field.errors 打印的话会渲染表单错误为一个无序列表列表ul会有一个class='errorlist' ,这个需要用户来定义这个 css class 应该这样显示。...而且没通过错误信息还用于渲染到表单页面,提醒提交表单用户错误。 除了form.errors存放全部校验错误信息。...自定义集成成ModelForm类,其class Metafields是使用哪些对应model字段应用到modelform。...,就在modelfrom建立一个字段定义就会完全覆盖modelform默认生成

    2.2K30

    djangoModelForm多表单组合解决方案

    显示       def __str__(self):           return self.as_table()          #如果模板不想写重复代码,只以固定格式来显示每一个...output, hidden_fields = [], []          #除了默认table方式显示,还可以或者方式显示       def as_table(self...告诉django需要在表单创建哪些字段。...,此时是不能save,因为project和address对应数据库记录还没有创建,所以commit传为False           contract = form.save(commit=False...#按照四条数据库记录顺序依次创建(调用save方法)、主键赋到下一条记录、下一次记录创建(save)           projectAddress = context['projectAddressForm

    3.4K20

    django创建表单以及表单数据类型和属性

    unique 关系 插入信息 models.UserInfo.objects.create(name='张三',age=12) models.Private.objects.create(salary...db_column 数据库字段列名 default 数据库字段默认值 primary_key 数据库字段是否为主键 db_index...数据库字段是否可以建立索引 unique 数据库字段是否可以建立唯一索引 class Meta: ### 联合唯一索引 unique_together...(字符串) height_field=None:上传图片宽度保存数据库字段名(字符串) 五.djamgo只在admin中生效属性 verbose_name:Admin显示字段名称 blank:...Admin是否允许用户输入为空 editable:Admin是否可以编辑 help_text:Admin字段提示信息 choices:Admin显示选择框内容,用不变动数据放在内存从而避免跨表操作

    78630

    Python:Django框架

    SEX_CHOICES=((‘F’,’Female’),(‘M’,’Male’),) db_column string 值,指定当前列在数据库名字,不设置,将自动采用model字段名 db_index...widget : 字段控件 label : 字段在html显示标签 initial : 初始在字段显示值 help_text: 在字段后面显示定义帮助文档 error_messages :...Not null 不能为空 foreign key 指定关键表 mysql> use my_db #使用my_db数据库 Database changed mysql> create table...objects.filter(**kwargs) 从数据库取得匹配结果,返回一个对象列表,如果记录不存在的话,它会返回[] 十三、Django-后台 应用注册 若要把app应用显示在后台管理...文章封面预览' 2.在admin.py中注册 ```python @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): #设置要显示在后台列表字段

    4.4K40
    领券