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

在django管理表单中添加父字段

在Django管理表单中添加父字段,可以通过定义一个外键字段来实现。外键字段用于建立表与表之间的关联关系,可以将一个表的某个字段与另一个表的主键字段关联起来。

具体步骤如下:

  1. 在父表所在的模型中定义一个外键字段,用于关联到子表的主键字段。例如,假设父表为ParentModel,子表为ChildModel,可以在ChildModel中定义一个外键字段parent = models.ForeignKey(ParentModel, on_delete=models.CASCADE)
  2. 在子表的管理表单中,通过ModelForm类来定义表单。在表单类中,可以使用ModelChoiceField来表示外键字段,以提供一个下拉列表供用户选择父表的记录。
  3. 在子表的管理页面中,使用formfield_for_foreignkey方法来自定义外键字段的表单字段。在该方法中,可以设置外键字段的查询集,以限制用户只能选择父表中的特定记录。

下面是一个示例代码:

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

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

class ChildModel(models.Model):
    parent = models.ForeignKey(ParentModel, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)

# forms.py
from django import forms
from .models import ChildModel

class ChildModelForm(forms.ModelForm):
    parent = forms.ModelChoiceField(queryset=ParentModel.objects.all())

    class Meta:
        model = ChildModel
        fields = '__all__'

# admin.py
from django.contrib import admin
from .models import ChildModel
from .forms import ChildModelForm

class ChildModelAdmin(admin.ModelAdmin):
    form = ChildModelForm

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'parent':
            kwargs['queryset'] = ParentModel.objects.filter(...)  # 设置外键字段的查询集
        return super().formfield_for_foreignkey(db_field, request, **kwargs)

admin.site.register(ChildModel, ChildModelAdmin)

在上述示例中,ParentModel表示父表,ChildModel表示子表。在子表的管理表单ChildModelForm中,通过ModelChoiceField定义了一个外键字段parent,用于选择父表的记录。在子表的管理页面ChildModelAdmin中,通过formfield_for_foreignkey方法自定义了外键字段parent的查询集,以限制用户只能选择满足特定条件的父表记录。

注意:上述示例中的代码仅为演示目的,实际使用时需要根据具体情况进行适当修改和完善。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云数据库MySQL、腾讯云对象存储(COS)等。你可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息。

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

相关·内容

Django Sqlite 数据库,已有表添加字段

一、model文件添加字段 可根据字段要求设置属性,如字段类型、是否为null,默认值等 from django.db import models # Create your models here....05-20 13:43:38') # 运行时间点 def __str__(self): return str(self.id) 二、迁移数据 1、项目文件下执行命令: #添加迁移事务...manage.py migrate Operations to perform: Apply all migrations: App, admin, auth, authtoken, contenttypes, django_cas_ng...OK 2、迁移完成后,将生成迁移文件 3、迁移完成后,新字段添加成功 三、撤销迁移 1、撤销上一次迁移数据 可以通过 migrate 传递上一次迁移的编号来撤销迁移。...1511,进入迁移文件,找到dependencies中信息 dependencies = [ ('App', '0019_auto_20220520_1510'), ] 命令行执行撤销

3.9K10

Java PDF 添加表单

PDF表单域是指用户PDF文件可以自主进行填写、选择等操作的区域,其主要目的是采集用户输入或选择的数据。常见的表单域包括文本框、单选按钮、复选框、列表框和组合框等。...文本将介绍如何使用 Free Spire.PDF for JavaJava程序创建PDF表单域。...Jar包导入 方法一:下载Free Spire.PDF for Java包并解压缩,然后将lib文件夹下的Spire.Pdf.jar包作为依赖项导入到Java应用程序 方法二:直接通过Maven仓库安装...; //文本框前的文字 page.getCanvas().drawString(text, font, brush1, new Point2D.Float(0, baseY)); //PDF...绘制文字 Rectangle2D.Float tbxBounds = new Rectangle2D.Float(baseX, baseY , 150, 15); //创建Rectangle2D

3.8K30

django admin详情表单显示添加自定义控件的实现

开发中有需求详情显示里外键字段内容,并且添加按钮弹窗内容,以及按钮跳转内容。...添加一个字段字段中有一个widget参数,我们可以在其中设置控件,我在里面添加了一个input类型,TextInput对象的参数attrs传入的是一个字典,我们可以在里面像写html一样写相关的css...这个时候我们就可以详情内看见button了,但是相对应的,detail的表单添加后,add的表单也会出现一个button,这个不是我们想要的,所以就要想办法让button只存在于detail界面...而弹出窗口的值获取可以form添加一个hidden字段,value为我们想要获取的值,js取值赋值即可。...刷新页面即可; 以上这篇django admin详情表单显示添加自定义控件的实现就是小编分享给大家的全部内容了,希望能给大家一个参考。

4.9K20

MySQL允许唯一索引字段添加多个NULL值

今天正在吃饭,一个朋友提出了一个他面试遇到的问题,MySQL允许唯一索引字段添加多个NULL值。...ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; 然后,我们给name字段添加一个唯一索引...); INSERT INTO `test` VALUES (2, NULL); 并没有报错,说明MySQL允许唯一索引字段添加多个NULL值。...网友给出的解释为: sql server,唯一索引字段不能出现多个null值 mysql 的innodb引擎,是允许唯一索引的字段中出现多个null值的。...**根据这个定义,多个NULL值的存在应该不违反唯一约束,所以是合理的,oracel也是如此。 这个解释很形象,既不相等,也不不等,所以结果未知。

9.6K30

Django教程(三)- Django表单Form1.Form 基本使用2.Form字段及插件3.通过Django表单Form来完成需求4.自定义验证验证规则

1.Form 基本使用 django的Form组件有以下几个功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 2.Form字段及插件...创建Form类时,主要涉及到 【字段】 和 【插件】,字段用于对用户请求数据的验证,插件用于自动生成HTML; 1.Django内置字段如下: Field: required=True,...注:需要PIL模块,pip install Pillow 以上两个字典使用时,需要注意两点: - form表单 enctype="multipart/form-data" - view函数 obj...{% widthratio 5 100 1 %} 上面的代码表示:5/100*1,返回0.05,只需要将第三个参数设置为1即可 ---- 3.通过Django表单Form来完成需求 1.根据用户填写表单的不同跳往不同的页面...在网页上打印1-100之间的偶数 4.自定义验证验证规则 方式1:字段自定义validators设计正则匹配 from django.forms import Form from django.forms

10.1K40

django 1.8 官方文档翻译:2-1-1 模型语法

渲染表单时使用的默认HTML 部件(例如,, )。 最低限度的验证需求,它被用在 Django 管理站点和自动生成的表单。...你唯一需要作出的决定就是你是想让模型具有它们自己的数据库表,还是让模型只持有一些共同的信息而这些信息只有子模型才能看到。 Django 中有3风格的继承。...代理 model 也可以继承任意多个抽象基类,但前提是它们没有 定义任何 model 字段。 代理模型的管理器 如果你没有代理 模型定义任何 管理器 ,代理模型就会从父类中继承 管理器 。...如果你代理 模型定义了一个 管理器 ,它就会变成默认的管理器 ,不过定义管理器仍然有效。...但在普通的多表继承,子类不能继承类的 manager ,这是因为处理非基类字段时,类的 manager 未必适用。 后一种情况 管理器文档有详细介绍。

4.9K20

bootstrap+django搭建防跨站点攻击登陆系统

这里需要说明以下,我编写model层,并不是直接继承的model.Model,而是继承的django自带的登录系统的AbstractUse类,这是django为了方便做登陆系统,而高度抽象出来的一个基类...当然你也可以重写基类,根据python继承的原则,子类与类相同的属性,类会被子类给覆盖。...从图中可以看见,我User类,定义了一个子类class Meta,它的作用从名称中就可看出来,是详细的名称verbosename是具体名称,下面一个是复数,至于他们的作用,就是admin后台管理系统能够显示...编写forms.py表单层: ? 注意,表单层使用widget来添加表单属性,继承django.forms类,即可使用。...视图函数这里,有几点需要注意,一是,我使用的是django的通用类视图,也就是继承了dajngo.views.generic的View,generic还有许多其他的类,它们都是基于View的。

1.2K20

37.Django1.11.6文档

视图中使用多个表单集 可以视图中使用多个表单集, 表单集从表单借鉴了很多方法 你可以使用 prefix 给每个表单字段添加前缀,以允许多个字段传递给视图,而不发生命名冲突 让我们看看可以怎么做 from...默认情况下它们都已经添加,除非你手动调整过设置,否则不需要自己添加。 确定你的应用的哪些模型管理后台界面应该可以编辑。..., 单一的字段集,和在模块定义的字段有相同的顺序 ModelAdmin.fieldsets 设置fieldsets 控制管理添加”和 “更改” 页面的布局. fieldsets 是一个以二元元组为元素的列表...向admin 添加自定义验证 管理添加数据的自定义验证是很容易的。 ...要向您的管理网站添加新视图,请扩展基本get_urls()方法,为新视图添加模式。 添加密码重置功能 您可以通过URLconf添加几行来将密码重置功能添加管理站点。

24.2K80

Django实战篇-论坛注册视图

在前两节,完成了论坛模型层的创建和表单 forms 的创建。 模型层中用到的字段类型,有整型,字符串型,时间型还有就是外键关联。...Django基础篇-模型基础 ① 论坛注册,需要创建注册函数; Django 自带了登录和注销的视图类。...from django.shortcuts import render from .forms import SignUpFor signup 函数,先是判断是 POST 请求还是 GET 请求。...经过 form.is_valid() 的字段验证,完成 form 表单中所填字段是否为注册表单SignUpForm() 对应字段的类型和字段要求。...③ 添加注册的路由 可以项目的主文件目录的 urls.py 文件添加注册路由。 需要注意的是 signup 函数的导入文件路径。

79420

​元数据管理—动态表单设计器crudapi系统完整实现

表单设计 在前面文章,我们通过一系列案例介绍了表单设计的一些基本功能,表单设计起到非常重要作用,也是crudapi核心,所以本文会详细介绍表单设计中一些其它功能。...系统字段 [system] 创建表单的时候会默认添加5个系统字段,分别是编号id,名称name,全文索引fullTextBody,创建时间 createdDate和修改时间lastModifiedDate...,表示手机号不允许重复 [uqmobile] 添加客户时,录入添加已经存在的手机号,提示重复错误,和期望的一致,唯一性索引可以防止数据重复。...联合索引 如果索引只有一个字段设置列属性的时候直接设置。如果是多个字段联合索引,就需要单独设置了。这里可以创建普通或唯一两种类型的联合索引,通过下拉框选择多个字段。...表单设计API [Swagger] 表单设计提供了API,如果默认提供的后台管理UI不适合,可以二次开发,重新设计UI,通过API管理表单,API文档如下: https://demo.crudapi.cn

1.7K70

35.Django2.0文档

如果发觉自己多个模板之间拷贝代码,你应该考虑将该代码段放置到模板的某个 {% block %} 。...也就是说,block 标签不仅挖了一个要填的坑,也定义了 模板这个坑所填充的内容。如果模 板中出现了两个相同名称的 {% block %} 标签,模板将无从得知要使用哪个块的内容。...3.设置字段可选  你或许会发现管理工具有个限制:编辑表单需要你填写每一个字段,然而在有些情况下,你想要某些字段是可选的。 举个例子,我们想要Author模块的email字段成为可选,即允许不填。...首先,我们先自定义字段顺序。 默认地,表单字段顺序是与模块定义是一致的。...超级用户标志:它赋予用户管理界面添加、修改和删除任何项目的权限。 如果一个用户帐号有这个标          志,那么所有权限设置(即使没有)都会被忽略。

11.2K100

00x: Django models.Model详解

假设你的model定义了app名为myapp的models.py 文件,为了使得Django识别出你要使用这个model,你就需要在settings.py设定如下: 当你添加新的APP到INSTALLED_APPS...默认的HTML插件 ,用以渲染表单字段(例如,) 基本的验证需求,Django的admin中和自动生成的表单中使用。 Django自带了很多内建的字段类型。...如下面的例子所示: unique: 若为True,该字段必须是整张表独一无二的 自动主键字段 默认情况下,Django给每个模型以下字段: 这是一个自动添加的自增主键。...SQL的一些保留字如`join,where,select则是可以model的字段名称中使用的,因为Django每次SQL查询避免了可能发生的冲突。...如果你忘记了调用类的方法,那么所有的操作都不会数据库中生效。 shell对数据库进行操作 Django提供了一个命令行工具,可以将当前项目下的环境,迁移到当前工作环境下。

1.6K20

Django | allauth】useprofile 用户模型扩展

应用的models.py 创建扩展模型(添加字段) from django.contrib.auth.models import User from django.db import models...通过重写表单,你还可以很容易添加其它字段。...: 自定义表单 配置好之后,是直接引入到allauth.account,forms的,这个时候是不能使用 重写的继承方法的!,不然引入类的操作会陷入调用循环!...(修改了注册表单) 四、 创建proflie模板和proflie_update模板 allauth 包复制粘贴templates 的account包到该项目的templates的account下,原因...: 我们登录用户之后,此时系统是记录我们的用户信息的,而此时如果我们更改路径到admin,输入我们的管理员账号会报 提供了两个参数的信息,这是因为管理员的用户信息和当前用户信息冲突了,需要signout

1.1K10

重新整理djangoAuth模块

0907自我总结 重新整理djangoAuth模块 from django.contrib import auth 一.设置 默认Auth表单 auth默认是使用自带的user表单 自定义Auth表单...一定要在settings.py告诉Django,我现在使用我新定义的UserInfo表来做用户认证。...写法如下: # 引用Django自带的User表,继承使用时需要设置 AUTH_USER_MODEL = "app名.UserInfo" modles.py创建表单模型可以对AbstractUser进行继承因为我们可以从源码中看出来...first_name:姓 last_name:名 email:邮箱 is_staff : 用户是否拥有网站的管理权限. is_active: 是否允许用户登录, 设置为 False,可以不删除用户的前提下禁止用户登录...再看他的另外的级PermissionsMixin is_superuser:是否为超级账号也就管理员 groups:分组 user_permissions:用户权限 我们可以再这基础上进行新增 二.注册相关

1K10

Django笔记】第8篇:Django使用自带模板。经验总结md文档集合(已分享,附代码)

模板如果发现在多个模板某些内容相同,那就应该把这段内容定义到模板。标签block:用于模板预留区域,留给子模板填充差异性的内容,名字不能相同。...模板也可以使用上下文中传递过来的数据。子模板标签extends:继承,写在子模板文件的第一行。子模版不用填充模版的所有预留区域,如果子模版没有填充,则使用模版定义的默认值。...CSRF示意图客户端访问服务器时没有同服务器做安全验证防止 CSRF 步骤客户端向后端请求界面数据的时候,后端会往响应的 cookie 设置 csrf_token 的值 Form 表单添加一个隐藏的的字段...(request)渲染转账页面的,做以下几件事情:生成 csrf_token 的值返回转账页面的响应里面设置 csrf_token 到 cookie 中将 csrf_token 保存到表单的隐藏字段...('csrf_token', csrf_token)​ return response转账模板表单添加 csrf_token 隐藏字段 <meta charset="

23210

Django | allauth】useprofile 用户模型扩展

应用的models.py 创建扩展模型(添加字段)from django.contrib.auth.models import Userfrom django.db import models# Create...通过重写表单,你还可以很容易添加其它字段。...: 自定义表单 配置好之后,是直接引入到allauth.account,forms的,这个时候是不能使用 重写的继承方法的!,不然引入类的操作会陷入调用循环!...(修改了注册表单)四、 创建proflie模板和proflie_update模板allauth 包复制粘贴templates 的account包到该项目的templates的account下,原因:...:我们登录用户之后,此时系统是记录我们的用户信息的,而此时如果我们更改路径到admin,输入我们的管理员账号会报 提供了两个参数的信息,这是因为管理员的用户信息和当前用户信息冲突了,需要signout

16410
领券