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

ForeignKey不支持django,我使用的是自定义用户模型,我同时尝试了MySQL和PostgreSQL

ForeignKey是Django框架中的一个字段类型,用于在模型之间建立关联关系。然而,对于使用自定义用户模型的情况,ForeignKey在MySQL和PostgreSQL数据库中的行为是有所不同的。

对于MySQL数据库,使用自定义用户模型时,需要将ForeignKey字段的参数设置为to_field='id',以明确指定关联到自定义用户模型的主键。具体代码如下:

代码语言:txt
复制
from django.db import models
from django.contrib.auth import get_user_model

class MyModel(models.Model):
    user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, to_field='id')

对于PostgreSQL数据库,由于其支持使用UUID作为主键,可以直接使用自定义用户模型,并将ForeignKey字段的参数设置为to_field='uuid',以关联到自定义用户模型的UUID主键。具体代码如下:

代码语言:txt
复制
from django.db import models
from django.contrib.auth import get_user_model

class MyModel(models.Model):
    user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, to_field='uuid')

需要注意的是,自定义用户模型需要继承自AbstractUser或AbstractBaseUser,并且在settings.py中配置AUTH_USER_MODEL属性指向自定义用户模型。

推荐的腾讯云相关产品:

  • 腾讯云数据库 MySQL:提供高可用、高性能的MySQL数据库服务,适用于各类业务场景。链接地址:https://cloud.tencent.com/product/cdb
  • 腾讯云数据库 PostgreSQL:提供全托管的PostgreSQL数据库服务,具备高可用、高性能的特点。链接地址:https://cloud.tencent.com/product/postgres
  • 腾讯云Serverless MySQL:基于Serverless架构的MySQL数据库服务,实现弹性扩缩容,按实际使用量计费。链接地址:https://cloud.tencent.com/product/tcr

希望以上答案能够满足您的需求,如果还有其他问题,请随时提问。

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

相关·内容

Web | Django 与数据库交互,你需要知道 9 个技巧

在本文中,将分享在 Django使用数据库 9 个技巧。 1....查询集结果变为具名元组(QuerySet results as namedtuples) 一个 namedtuples 粉丝,同时也是 Django 2.0 ORM 粉丝。...自定义函数(Custom functions) Django 2.0 ORM 功能非常强大,而且特性丰富,但还是不能与所有数据库特性同步。不过幸运,ORM让我们用自定义函数来扩展它。...PostgreSQL 不支持间隔类型字段求标准偏差操作,我们需要将时间间隔转换为数字,然后才能对它应用 STDDEV_POP 操作。...在这种情况下,意味着一个用户只能同一个组成员,还是那个模型: class Membership(Model): group = ForeignKey(Group) user = ForeignKey

2.8K40
  • Django3.0新鲜出炉!全面解读新特性,ASGI真香实锤,不来了解一下?

    去选择其他异步框架也是因为它不支持异步,现在它终于完全拥抱异步了,也就可以重拾Django,尝尝鲜啦!...数据库支持 在数据库支持方面,一方面Django 3.0将放弃对PostgreSQL 9.4版本Oracle 12.1版本支持。...对于开发者来说,最初上手Django框架一般Django+MySQL/PostgreSQL来搞Web,现在可以借此机会尝试下MariaDB,相比于PostgreSQL,MariaDB更类似与MySQl...更多对比可以参考mariadb-vs-mysqlPostgreSQL排斥约束 新ExclusionConstraint类允许在PostgreSQL上添加排除约束。...Django+ASGI+Uvicorn实战 ASGI既然基于WSGI扩展开发,那么使用方法WSGI类似,我们同样需要一个application对象,然后使用应用服务器把这个对象启动起来,就像使用

    2.7K10

    Django 学习笔记之模型(上)

    你本文将讲解 “MTV” 中 M 层次,即模型层(数据存取层)。模型这内容比较多,将其拆分为 3 个部分来讲解。同时,文章也配套了例子,你可以通过 阅读原文 来查看。...顺便补充下本文用一些工具版本:Python 版本是 3.6,Mysql 版本是 5.5 1 模型是什么 在 Web 应用中,数据一般存储到数据库中。Django模型跟数据库打交道层次。...Django 目前支持以下这 MySQLPostgreSQL、Oracle 等数据库,它们数据库引擎设置如下: 其中设置字段填充 ENGINE 值。...如果你使用 MySQL 数据库,那么你需要填写 django.db.backends.mysql。数据库驱动表示需要使用 pip 安装该库。...如果你使用 MySQL 数据库,那么你需要安装 MySQLdb 设配器。 但是这里有个坑,MySQLdb 在支持 Python 2 版本,不支持 Python 3 版本。

    1.8K30

    django 字段类型_access数据库类型

    大家好,又见面了,你们朋友全栈君。 字段类型 字段类型指使用Django ORM创建数据库时支持数据字段类型。...auto_now_add:新创建对象时自动添加当前日期时间,用于“创建时间”时使用。 auto_nowauto_now_adddefault参数互斥,不能同时设置。...在PostgreSQL使用时,使用数据类型为interval,在Oracle上使用为。否则,将使用微秒。...:与模型相关on_delete选项,如果创建地柜关系(一个与自身具有多对一关系对象)则使用model.ForeignKey(‘self’,on_delete=models.CASCADE)。...(23) ManyToManyField 多对多关系表,需要一个位置参数:与模型相关类,工作原理与ForeignKey完全相同,包括递归惰性关系。

    3.9K30

    完整 Django 零基础教程|初学者指南 - 第 3 部分 转自:维托尔·弗雷塔斯

    在类图中,只提到了字段username 、password 、email 超级用户 标志,因为这几乎我们现在要使用全部内容。...需要注意,我们不需要创建User 模型,因为 Django 已经在contrib包中内置了User 模型 。我们将使用它。 关于多重性在类图(数字 1,0..*等等),这里你如何阅读: ?...在这里,我们仅使用 CharField、TextField、DateTimeField ForeignKey字段来定义我们模型。...在模型之间创建关系一种方法使用 ForeignKey字段。它将在模型之间创建链接并在数据库级别创建适当关系。该 ForeignKey字段需要一个位置参数,其中包含对其将相关模型引用。...SQLite 无法与 MySQLPostgreSQL 或 Oracle 等数据库进行比较。大容量网站、写入密集型应用程序、非常大数据集、高并发性,这些情况最终会导致使用 SQLite 出现问题。

    2.2K40

    django开发个人简易Blog——数据模型

    只需要运行几个简单命令,就可以方便将数据模型mysql数据库建立联系。...输入刚刚创建超级用户用户密码,点击login按钮,即来到如下管理界面: ? 通过这个管理界面,可以方便用户用户进行管理,并且有详细日志记录。...到目前为止,一个可以验证用户权限并且可管理用户用户后台管理系统就可以完美的运行了,简直太方便了。好了,下面开始添加与本系统相关数据模型。...数据模型设计: 由于这只是一个简单博客,并且功能有限,所以,数据模型也是比较简单,仅包括文章表、分类表及评论表这三个表,至于用户验证部分,使用django自带用户表。...开始安装自定义模型,找到settings.py,将INSTALLED_APPS中设置值,增加一项'fengzhengBlog.blogapp',包名fengzhengBlog,app名称是blogapp

    90680

    Django模型入门教程-操作MySQL

    数据库和面向对象对应关系: 数据表 - 类 数据行 - 对象 字段 - 属性 配置MySQL数据库 在 Django 中默认使用数据库 SQLite,而在我们这边很多中小企业喜欢用 MySQL,所以使用...要使用数据库引擎常用引擎包括: 'django.db.backends.postgresql'(PostgreSQL) 'django.db.backends.mysql'(MySQL) 'django.db.backends.sqlite3...PASSWORD:用户名对应密码。 在自己电脑用户密码都设置得比较简单,在生产环境千万别设置这么简单账号密码。...安装 PyMySQL 在 Django 中,默认使用 MySQL 数据库连接库 MySQLdb 。...因为在Mac上操作,电脑有python2python3两个环境,所以我需要使用 python3 xxxx 这种方式去执行。 接下来在数据库中看看这两个表。

    8810

    博客将 Django 1.11+ 升级到 Django 2.2+ 遇到问题及规避方法

    之前就有人一直催把博客 Django 升级到 Django 2.0 以上,但是一直懒得升级,因为早就看过 Django 2.x 版本 1.11.x 版本,其实没有太多不同,所以没有找到需要升级必要...之所以会出现这个问题,是因为 django 默认 MySQL 连接库 mysqldb,所以它其实想要读取这个库版本,但是由于这个库不支持 Python3 所以我们一般会改成 pymysql 库来连接...由于修改了依赖,所以第一步应该卸载当前虚拟机环境中 PyMySQL 库同时安装 mysqlclient 1.4.4,这个地方可能会出现问题,解决方式如下: 如果 Windows 系统,直接使用 pip...,这个地方关于一些模型在一对一关联一对多关联(外键)时候需要指定 on_delete 参数才行,多对多没有这个设置。...规避方法 首先,Django 2.x 跟 Django 1.x 最明显修改就是在路由格式,可以使用 path 替换之前使用 url,会显得更简单,下面修改: # blog app 写法 path

    96720

    django 1.8 官方文档翻译: 2-5-6 多数据库

    定义你数据库 在Django使用多个数据库第一步告诉Django 你将要使用数据库服务器。这通过使用DATABASES 设置完成。...下面settings.py一个示例片段,它定义两个数据库 —— 一个默认PostgreSQL 数据库一个叫做usersMySQL 数据库: DATABASES = { 'default...Django 数据库操作使用主路由来分配数据库使用。每当一个查询需要知道使用哪一个数据库时,它将调用主路由,并提供一个模型一个Hint (可选)。...多数据库上使用原始游标 如果你正在使用多个数据库,你可以使用django.db.connections来获取特定数据库连接(游标):django.db.connections一个类字典对象,它允许你使用别名来获取一个特定连接...然而,如果你正在使用SQLite 或MySQLMyISAM 表,则没有强制性引用完整性;结果你可以‘伪造’跨数据库外键。但是Django 官方不支持这种配置。

    1.5K20

    用人话讲解django之数据增删改

    在 web 开发中,最重要数据库设计,就是 models 模型设计,简单web开发说白了就是对数据库增删改查,今天先看下数据库增加,修改,删除吧,我们操作数据库可以使用原生sql语句,但是如果...sql操作语句不复杂,可以使用django ORM 语句,它是通过一些封装,根据 ORM 语法可以对数据库增删改查,用一同一个 ORM 语句可以支持对 mysql、sqlite、PostgreSQL...现在model模型有两个表,一个学生表,一个班级表,代码如下: class Student(models.Model): # 一定要继承 # CharField为字符串类型,必须有max_length...一对多外键,比如一个班级有多个学生,就属于一对多,外键要放到"多"那张表, # related_name对外键取别名,常用在djangoorm反向查询中 cls = models.ForeignKey...="1901") # 同时新增一个学生班级操作 # 新增一个班级名称为1903班级,返回一个班级实例 cls_instance = Class.objects.create(

    40930

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

    自己近期也总做了下总结,将花大概两篇篇幅来分享下模型一些高级用法。 如果想熟悉 Django 用法,认为应该一开始要熟悉一些细节用法,后面再了解 Django 实现原理。...db_tablespace:如果该字段已经设置了索引,db_tablespace 用于指定字段索引数据库表空间名字。另外还需要看使用数据库支不支持表空间。如果不支持,该参数设置没有效果。...editable:设置该字段是否能被编辑,默认 True。如果设为 False , 这个字段将不会出现在 admin 或者其他 ModelForm 中。 同时也会跳过 模型验证 。...error_messages:用于自定义错误提示信息。参数接受字典类型值。...如果用户没有定义该选项, Django会自动将自动创建,内容该字段属性名中下划线转换为空格结果。

    2K30

    探索 PythonDjango 支持分布式多租户数据库,如 Postgres+Citus

    将租户列介绍给我们想要分发缺少它模型 更改分布式表主键以包含租户列 更新模型使用 TenantModelMixin 分发数据 将 Django 应用程序更新为范围查询 准备横向扩展多租户应用程序...在所有主键唯一约束中包含 account_id 2.1 将 account_id 包含到主键中 Django 会自动在模型上创建一个简单 “id” 主键,因此我们需要通过自己自定义迁移来规避这种行为...更新模型使用 TenantModelMixin TenantForeignKey 接下来,我们将使用 django-multitenant 库将 account_id 添加到外键中,以便以后更轻松地查询应用程序...在 settings.py 中,将数据库引擎改为 django-multitenant 提供自定义引擎: 'ENGINE': 'django_multitenant.backends.postgresql...实际项目中模型也可能继承自其他 mixin,例如 django.contrib.gis.db,这很好。 此时,您还将引入 tenant_id 来定义哪一列分布列。

    2.1K10

    Django 2.x实战(02) - 深入模型

    ':SQLite嵌入式数据库 'django.db.backends.postgresql':BSD许可证下发行开源关系型数据库产品 'django.db.backends.mysql':转手多次目前属于甲骨文公司经济高效数据库产品...如果使用其他关系型数据库,还要配置对应HOST(主机)、PORT(端口)、USER(用户名)、PASSWORD(口令)等属性。...Django找不到连接MySQL客户端工具而询问你:“Did you install mysqlclient?...OK 可以看到,Django帮助我们创建了10张表,这些都是使用Django框架需要东西,稍后我们就会用到这些表。除此之外,我们还应该为我们自己应用创建数据模型。...如果要在hrs应用中实现对部门员工管理,我们可以创建如下所示数据模型

    45330

    Django来敲门~第一部分【5.2.模型和数据库交互】

    数据库配置【MySQL】 通常情况下,如果你只是做测试使用,可以使用Django内置数据库SQLite就完全可以满足需要了,我们在本次教程中,通过使用MySQL这个数据库来完成后续功能操作 我们首先要做...可以从django.db.backends.sqlite3、django.db.backends.postgresqldjango.db.backends.mysql或者django.db.backends.oracle...) 同时还可以使用USER、PASSWORD、HOST等等这些配置来配置更加详细信息 注意:如果在项目中使用数据库不是默认SQLite,请确保你数据库存在 废话不说,上干货 打开mysite...创建模型对象 常规情况下,我们需要在程序中,通过类对象来封装我们数据,方便数据统一管理使用Django中对模型对象规范做更加统一了,通常情况下将模块应用对象会常见在应用模块应用/models.py...使用模型对象API操作 在命令行通过shell启动应用,就可以直接进行python根据模型应用提供API接口访问测试了 执行如下命令: python3 manage.py shell 就可以在命令行中

    44810

    Django 面试题

    过完年后,就是春招了,找工作好时机,找工作或换工作同学需要好好准备一下面试了,最近精选了 10 个关于 Django 面试题,如果要看更多面试题目,请在公众号后台回复「面试」获取。...它还与模型模板交互。 4. Django 中 OneToOneField ForeignKey 差异?...ForeignKey OneToOneField Django fields 最常用两个类型,在数据库中,ForeignKey 代表一种多对一关系,映射为 Model 类时需要提供 on_delete...它们告知 Django:如果在终端用户语言里,这个文本有对应翻译,那么应该使用翻译。标记字符串职责,系统只会翻译它知道字符串。...完成后,Django 会根据用户语言偏好,使用每种可用语言对网页进行即时翻译。 Django 国际化钩子默认开启,这意味着在框架某些位置存在一些 i18n 相关开销。

    1.6K30

    基于 Django 手机管理系统

    一、概述 打算通过设计数据库,然后结合 Python 框架Django,实现在网页上对数据库增删改查(本例以手机管理为例,不考虑订购功能),有普通用户界面管理员用户界面,普通用户只能做简单查看需求...此数据库字段由于是从 sqlite 迁移到 MySQL 中,Django 自动帮我再生成字段,所以有些字段名和我在 Django字段不一致,但数据表关系还是一致。...注意安装 Python MySQL 驱动程序这块,刚开始安装 MySQL 官网提供 mysql-python 这个模块,但在 Python3环境下会报错,原因mysql-python 模块不支持...三、设计网站 设计网站,在 Django 中增加 static 文件 template 文件,套用相关模板框架(这里运用了 bootstrap),编写 HTML 文件,调用数据库中内容,设计网站如下...四、总结 至此,一个简单 手机管理系统就被我们实现出来了(Django + Bootstrap + MySQL),当然其中还存在中很多不足,比如没有实现普通用户登录功能,HTML 页面写也比较简陋

    1.6K40
    领券