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

如何为用户django自动设置不可编辑的外键

为用户 Django 自动设置不可编辑的外键,可以通过以下步骤实现:

  1. 在 Django 的模型中定义外键字段,并设置 editable=False 属性,以确保该字段在后台管理界面中不可编辑。例如:
代码语言:txt
复制
from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    group = models.ForeignKey(Group, on_delete=models.CASCADE, editable=False)
  1. 创建一个自定义的表单类,继承自 Django 的 ModelForm 类,并在该类中重写 __init__ 方法。在 __init__ 方法中,将外键字段设置为不可编辑状态。例如:
代码语言:txt
复制
from django import forms
from .models import User

class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['group'].widget.attrs['disabled'] = True
  1. 在视图函数中使用自定义的表单类来处理用户提交的数据。例如:
代码语言:txt
复制
from django.shortcuts import render
from .forms import UserForm

def create_user(request):
    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid():
            form.save()
            return render(request, 'success.html')
    else:
        form = UserForm()
    return render(request, 'create_user.html', {'form': form})

通过以上步骤,用户在创建或编辑用户时,将无法修改外键字段的值。这样可以确保外键关系的完整性和一致性。

推荐的腾讯云相关产品:腾讯云数据库 TencentDB,提供高性能、可扩展的数据库服务,支持多种数据库引擎,适用于各种应用场景。

产品介绍链接地址:腾讯云数据库 TencentDB

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

相关·内容

django模型中有关系表删除相关设置

0904自我总结 django模型中有关系表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...db_constraint=False, on_delete=models.CASCADE ) 1)关系字段放在AuthorDetail表中:作者删除详情删除,详情删除作者保留 2)作者找详情用 ...related_name(detail),详情找作者用 字段(author) 3)db_constraint断开表关联,on_delete规定逻辑关联删除动作,models.CASCADE级联删除...):出版社删除书不动,书删除没有任何影响 2)出版社找书用 related_name(books),书找出版社 字段(publish) 3)db_constraint断开表关联,on_delete...,反向找 字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质在第三张表中设置,且一定是级联)

3K20

linux系统下Vi编辑器或者Vim编辑设置显示行号、自动缩进、调整tab宽度技巧?

工作中嫌vim 中一个tab宽度太大,linux系统默认,没改之前是一个tab宽度是8个字符,想改成4个字符, 操作如下:(注意:这是在root用户下) cd ~ vim .vimrc 添加如下几行...:(注意:括号中不是哦,是我添加注释说明) set shiftwidth=4    (表示每一级缩进长度) set softtabstop=4   (表示在编辑模式时候按退格时候退回缩进长度...不影响编辑,但是很别扭,肯定有不对地方。...这是需要: 在root用户下使用命令 vi /etc/vim/vimrc.tiny 修改文件,将set compatible 设置成set nocompatible。...这是因为有时候系统会默认vim兼容vi,所以使用vi命令。 操作完成后,再次按照上面的操作设置下即可。

3.3K20
  • Django-Multitenant,分布式多租户数据库项目实战(PythonDjango+Postgres+Citus)

    目录 项目源码 安装 支持 Django 版本/前提条件。 用法 模型变化 使用 mixins 更改模型 在 db 层自动化复合: 在哪里设置租户?...支持 API Python/Django 支持分布式多租户数据库, Postgres+Citus。...: 在 db 层自动化复合: 使用 TenantForeignKey 在租户相关模型之间创建自动将 tenant_id 添加到引用查询(例如 product.purchases)和连接查询(例如...如果要确保在 db 层创建复合(带有 tenant_id),则应将 settings.py 中数据库 ENGINE 更改为 django_multitenant.backends.postgresql...在您希望基于租户范围所有视图中使用 set_current_tenant(t) api 设置租户。这将自动(不指定显式过滤器)将所有 django API 调用范围限定为单个租户。

    1.9K10

    Python面试题:Django Web框架基础与进阶

    视图与模板:视图函数与类视图:对比视图函数与类视图优缺点,给出使用场景示例。模板语言:列举Django模板语言主要功能(循环、条件、模板继承、模板标签等),并编写简单示例。...表单与验证:表单类:阐述Django表单类定义、字段类型、验证规则、绑定数据、清洗数据等过程。自定义验证:演示如何为表单字段添加自定义验证方法,处理复杂验证逻辑。...用户认证与授权:认证系统:描述Django自带认证系统,包括用户模型、登录/登出、密码管理等。权限与组:解释Django权限系统,演示如何为用户分配权限、创建用户组,以及在视图中进行权限检查。...规避:遵循数据库设计原则,合理使用、多对多关系、索引,避免数据冗余。模板过度嵌套与逻辑混杂:误区:在模板中编写过多业务逻辑,导致模板层次过深、可读性差。...规避:使用Django提供防护措施(QuerySet查询、模板自动转义、CSRF middleware),编写安全代码。四、代码示例1.

    22610

    Django model 层之Models与Mysql数据库小结

    自动设置field值为当前日期,所以,即便显示为该字段提供了值,也会自动忽视显示设定值。...删除被参照表某条表记录,同时级联删除参照表中,同待删除记录存在外关联关系记录。 PROTECT 删除被参照表中某条表记录,如果参照表中,存在与该记录有关系记录,则不让删除。...SET_NULL 删除被参照表某条表记录,设置参照表中,同待删除记录存在外关联记录列值为null。当且仅当设置了null=True选项时可用。...SET_DEFAULT 删除被参照表某条表记录,设置参照表中,同待删除记录存在外关联记录列值为默认值。必须为设置默认值。...SET() 删除被参照表某条表记录,设置参照表中,同待删除记录存在外关联关系记录列值为传递给SET()参数值,如果传递给SET()参数值是可调用对象,则设置为调用可调用对象获取结果。

    2.2K20

    Django之路由层

    一对多字段创建时候同步到数据中表字段会自动加_id后缀,如果我们手动加了_id orm也会在给我们加一次,所以我们这里不要加_id """ # 书跟作者是多对多关系字段建在任意一方都可以...unique """ 一对一字段创建时候同步到数据中表字段会自动加_id后缀,如果我们手动加了_id orm也会在给我们加一次,所以我们这里不要加_id """ class...,建议建在查询频率高一方 一对多字段创建时候同步到数据中表字段会自动加_id后缀,如果我们手动加了_id orm也会在给我们加一次,所以我们这里不要加_id 多对多关系,django orm会自动帮我们创建书籍和作者第三张关系表...url(r'^edit_user/(\d+)/',views.edit_user,name='edit') def edit_user(request,edit_id): # edit_id就是用户想要编辑数据主键值...'edit' user_obj.id %}'>编辑 {% endfor %} 3.5路由分发 当一个项目比较大时,为了简化项目文件路由匹配,在Django中所有的app都建立自己独立urls.py

    1.3K21

    Django 1.10中文文档-第一个应用Part7-自定义管理站点

    Django在admin站点中,自动地将所有的关系展示为一个select框。在我们例子中,目前只有一个question对象存在。 请注意图中绿色加号,它连接到Question模型。...每一个包含关系对象都会有这个绿色加号。点击它,会弹出一个新增Question表单,类似Question自己添加表单。...填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice关联对象。通俗讲就是,新建一个Question并作为当前Choice。...(运行Web服务器用户即是运行Django用户)。然而,但是作为一个好习惯,最好把模板放在本项目目录下。...回答是,由于APP_DIRS被设置为`True``,Django自动查找每一个应用路径下templates/子目录(不要忘了django.contrib.admin也是一个应用)。

    3.6K60

    django orm 重点大全

    1.最简单跨表,查询表中符合主表条件记录列表 #用户类型表 class User_typ(models.Model): name=models.CharField(max_length=...(对象列表) obj=User.objects.filter(type__name='普通用户') 2.最简单多表联查,查询表中符合主表主表条件记录列表 #主表aa class aa(models.Model...): a=models.CharField(max_length=32) #表bb,同时也是cc主表 class bb(models.Model): b=models.CharField...(max_length=32) b1=models.ForeignKey(User_typ) #表cc class cc(models.Model): c=models.CharField...如果你没有指定任何一个字段primary_key=True, Django 就会自动添加一个IntegerField字段做为主键,所以除非你想覆盖默认主键行为, 否则没必要设置任何一个字段primary_key

    79240

    Django数据库查询优化与AJAX

    : res = models.Book.objects.all()#只有当我们使用res时才会执行数据库查询操作 all、only与defer all 拿到自己所有的属性,但是没有与其他表建立属性...,特点:内部自动连表操作,会将括号内外字段所关联表与当前表自动拼接成一张表,然后将表中数据一个一个查询出来封装成一个一个对象。...这样做好处:跨表查询也不需要重复走数据库,减轻数据库压力。select_related()括号内放多个字段,逗号隔开,会将多个字段关联表与当前表拼成一张大表。...,特点:按步骤查询多张表,然后将查询结果封装到对象中,给用户感觉好像还是连表操作,括号内支持传多个字段,每放一个字段就会多走一条SQL语句,多查一张表。...AJAX应用场景 搜索引擎根据用户输入关键字,自动提示检索关键字,网站注册时候实时用户查重,特点: 不刷新页面的前后端数据交互 异步操作,当请求发出后,浏览器还可以进行其他操作 AJAX前知识储备

    2.4K20

    Django admin 一些有用设置

    设置显示字段      fk_fields = ('machine_room_id',) 此处比较简单,自己尝试一下即可。...另外,默认可以点击每条记录第一个字段值可以进入编辑界面。  ? 我们可以设置其他字段也可以点击链接进入编辑界面。 ?...过滤器如果是需要遵循这样语法:本表字段__表要显示字段。:“user__user_name” 3、颜色显示 想对某些字段设置颜色,可用下面的设置: ?...三、编辑界面设置 编辑界面是我们编辑数据所看到页面。我们可以对这些字段进行排列设置等。 若不任何设置,如下图所示: ? 这个界面比较简陋,需要稍加设置即可。...4.设置只读字段  在使用admin时候,ModelAdmin默认对于model操作只有增加,修改和删除,但是总是有些字段是不希望用户编辑

    2.6K70

    django_mysql_配置

    'PASSWORD': 'mysql', # 数据库用户密码 'NAME': 'django_demo' # 数据库名字 } } ?...2) django会为表创建自动增长主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长主键列。...null是数据库范畴概念,blank是表单验证范畴 5) 一般我用CASCADE 在设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理,在django.db.models...中包含了可选常量: CASCADE 级联,删除主表数据时连通一起删除外表中数据 PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被应用数据 SET_NULL...设置为NULL,仅在该字段null=True允许为null时可用 SET_DEFAULT 设置为默认值,仅在该字段设置了默认值时可用 SET() 设置为特定值或者调用特定方法, from

    1.6K10

    人生苦短,我用PyCharm

    至于测试代码,我们来快速写一个简单猜谜游戏,即程序选择一个数字让用户来猜,在每一次猜测时,程序将告诉用户他猜数字比神秘数字大还是小,用户猜中数字时游戏结束。以下是该游戏代码: ?...首先,点击第 8 行代码左侧空白区域,设置断点: ? 断点即程序运行到这一行时会自动停止,你可以探索断点处之后代码有什么错误。...从下拉列表中选择 Git,点击 OK,这样你就为项目设置好了 VCS。(注意,如果你打开已有项目已经具备版本控制系统,PyCharm 将会发现并自动使用该版本控制系统。)...具体而言在创建项目时,你会得到一个专用 Django 项目类型。这表示,当你选择该类型时,你将拥有所有必要文件和设置。...我们还可以在其他 Django 部分(视图、URL 和模型)中执行代码补全、对 Django ORM 提供代码追踪支持(code insight support)、对 Django 模型提供模型依赖项关系图

    2.6K30

    Python 最强 IDE 详细使用指南!

    至于测试代码,我们来快速写一个简单猜谜游戏,即程序选择一个数字让用户来猜,在每一次猜测时,程序将告诉用户他猜数字比神秘数字大还是小,用户猜中数字时游戏结束。以下是该游戏代码: ?...首先,点击第 8 行代码左侧空白区域,设置断点: ? 断点即程序运行到这一行时会自动停止,你可以探索断点处之后代码有什么错误。...从下拉列表中选择 Git,点击 OK,这样你就为项目设置好了 VCS。(注意,如果你打开已有项目已经具备版本控制系统,PyCharm 将会发现并自动使用该版本控制系统。)...具体而言在创建项目时,你会得到一个专用 Django 项目类型。这表示,当你选择该类型时,你将拥有所有必要文件和设置。...我们还可以在其他 Django 部分(视图、URL 和模型)中执行代码补全、对 Django ORM 提供代码追踪支持(code insight support)、对 Django 模型提供模型依赖项关系图

    2.5K20

    人生苦短,我用PyCharm

    至于测试代码,我们来快速写一个简单猜谜游戏,即程序选择一个数字让用户来猜,在每一次猜测时,程序将告诉用户他猜数字比神秘数字大还是小,用户猜中数字时游戏结束。以下是该游戏代码: ?...首先,点击第 8 行代码左侧空白区域,设置断点: ? 断点即程序运行到这一行时会自动停止,你可以探索断点处之后代码有什么错误。...从下拉列表中选择 Git,点击 OK,这样你就为项目设置好了 VCS。(注意,如果你打开已有项目已经具备版本控制系统,PyCharm 将会发现并自动使用该版本控制系统。)...具体而言在创建项目时,你会得到一个专用 Django 项目类型。这表示,当你选择该类型时,你将拥有所有必要文件和设置。...我们还可以在其他 Django 部分(视图、URL 和模型)中执行代码补全、对 Django ORM 提供代码追踪支持(code insight support)、对 Django 模型提供模型依赖项关系图

    2.6K10

    Django中基表创建、字段属性简介、脏数据概念、子序列化

    db_table = 'xxx'指定该类数据库表单名字。当然如果不指定也没关系,Django自动默认按照一定规则生成数据模型对应数据库表名。...两张表建立了一对一字段,在A表,那么先往B表写数据就更合理。...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外设置反向查询字段名:正向找字段名,反向找related_name...SET_DEFAULT:假设A表依赖B表,B记录删除,A表字段重置为default属性设置值,所以必须配合default属性使用。...,将两张表设置为级联,并将反向查询字段名设置为detail 数据库中脏数据介绍 数据库中常见并发操作所带来了一致性问题包括:丢失修改,不可重复读,读“脏”数据,幻读。

    4.3K30

    Django 1.10中文文档-第一个应用Part2-模型和管理站点

    我们将设置数据库,创建您第一个模型,并快速介绍Django自动生成管理网站。 数据库设置 现在,编辑mysite/settings.py。...(你也可以重写这个行为); 按照惯例,Django会在外字段名后面添加 "_id"。(你依然可以重写这个行为); 关系由FOREIGN KEY约束显式声明。...不用在意DEFERRABLE部分;它只是告诉PostgreSQL直到事务最后再执行关联; 这些SQL语句是针对你所使用数据库定制,所以会为你自动处理某些数据库所特有的字段例如auto_increment...Django解决了为网站管理员创建统一界面以编辑内容问题。管理网站不打算供网站访问者使用。 创建管理用户 首先,我们需要创建一个可以登录到管理网站用户。...进入admin站点 使用在上一步中创建超级用户帐户登录。您应该会看到Django管理员索引页面: ? 您应该会看到几种类型编辑内容:组和用户

    2.3K60

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

    你将看到如下 PyCharm 窗口: 至于测试代码,我们来快速写一个简单猜谜游戏,即程序选择一个数字让用户来猜,在每一次猜测时,程序将告诉用户他猜数字比神秘数字大还是小,用户猜中数字时游戏结束。...比如键入 main 并点击 tab ,PyCharm 会自动补全整个 main 从句。...首先,点击第 8 行代码左侧空白区域,设置断点: 断点即程序运行到这一行时会自动停止,你可以探索断点处之后代码有什么错误。...具体而言在创建项目时,你会得到一个专用 Django 项目类型。这表示,当你选择该类型时,你将拥有所有必要文件和设置。...Django 部分(视图、URL 和模型)中执行代码补全、对 Django ORM 提供代码追踪支持(code insight support)、对 Django 模型提供模型依赖项关系图。

    1.9K00

    Django 学习笔记之模型高级用法(上)

    2.1 ForeignKey 1) on_delete 在 Django 2.0 中,设置时需要添加一个 on_delete选项。本身涉及到两个表数据,况且在数据库中是有约束行为。...SET_NULL: 置空模式,删除时候,字段被设置为空,前提就是`blank=True, null=True`,定义该字段时候,允许为空。...SET_DEFAULT: 置默认值,删除时候,字段设置为默认值,所以定义时候注意加上一个默认值。 SET(): 自定义对应实体值。...2)limit_choices_to 该参数用于限制所能关联对象,只能用于 Django ModelForm(Django表单模块)和 admin 后台,对其它场合无限制功能。...如果用户没有定义该选项, Django自动自动创建,内容是该字段属性名中下划线转换为空格结果。

    2K30

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

    至于测试代码,我们来快速写一个简单猜谜游戏,即程序选择一个数字让用户来猜,在每一次猜测时,程序将告诉用户他猜数字比神秘数字大还是小,用户猜中数字时游戏结束。以下是该游戏代码: ?...首先,点击第 8 行代码左侧空白区域,设置断点: ? 断点即程序运行到这一行时会自动停止,你可以探索断点处之后代码有什么错误。...从下拉列表中选择 Git,点击 OK,这样你就为项目设置好了 VCS。(注意,如果你打开已有项目已经具备版本控制系统,PyCharm 将会发现并自动使用该版本控制系统。)...具体而言在创建项目时,你会得到一个专用 Django 项目类型。这表示,当你选择该类型时,你将拥有所有必要文件和设置。...我们还可以在其他 Django 部分(视图、URL 和模型)中执行代码补全、对 Django ORM 提供代码追踪支持(code insight support)、对 Django 模型提供模型依赖项关系图

    2.4K01

    人生苦短,我用PyCharm

    至于测试代码,我们来快速写一个简单猜谜游戏,即程序选择一个数字让用户来猜,在每一次猜测时,程序将告诉用户他猜数字比神秘数字大还是小,用户猜中数字时游戏结束。以下是该游戏代码: ?...首先,点击第 8 行代码左侧空白区域,设置断点: ? 断点即程序运行到这一行时会自动停止,你可以探索断点处之后代码有什么错误。...从下拉列表中选择 Git,点击 OK,这样你就为项目设置好了 VCS。(注意,如果你打开已有项目已经具备版本控制系统,PyCharm 将会发现并自动使用该版本控制系统。)...具体而言在创建项目时,你会得到一个专用 Django 项目类型。这表示,当你选择该类型时,你将拥有所有必要文件和设置。...我们还可以在其他 Django 部分(视图、URL 和模型)中执行代码补全、对 Django ORM 提供代码追踪支持(code insight support)、对 Django 模型提供模型依赖项关系图

    1.9K31
    领券