python - Django 将 ManytoManyField 设置为默认用户模型
问题描述
我需要设置manytomany
与默认 django 用户表的关系。有没有办法实现它而不是使用AbstractUser
django 的方法(扩展用户模型)?
解决方案
您应该使用 Django 的get_user_model()
函数 [Django-doc],如文档中所述:
而不是
User
直接引用,您应该使用django.contrib.auth.get_user_model()
. 此方法将返回当前活动的用户模型——如果指定了自定义用户模型,则返回自定义用户模型,User
否则。
即使您使用的是 Django 的默认用户模型,也最好使用get_user_model
,因为如果您以后改变主意,可以更改AUTH_USER_MODEL
设置 [Django-doc],并且对用户模型的引用将被更新。
例如:
from django.db import models
from django.contrib.auth import get_user_model
class SomeModel(models.Model):
users = models.ManyToManyField(get_user_model())
usingAbstractUser
将不起作用,因为这是一个抽象模型,它不会引用您使用的用户模型。
此外,如果您想使用 Django 的内置模型,您不必为自己创建子类。如果您希望自己定义用户模型,则可以进行子类化。AbstractUser
User
AbstractUser
推荐阅读
- python - AttributeError:“NoneType”对象在 edX 上的 Python 中没有“附加”属性
- python - 使用 Python 选择目录
- android - 如何在 API 29+ 中获取 MediaStore 专辑项目的缩略图?
- javascript - JS - 在播放音乐时改变样式
- javascript - 如何每天重复倒数计时器并每天多次?
- node.js - Mongoose 预保存挂钩在文档中设置自动增量 ID
- dependencies - Maven排除传递依赖的依赖
- sql - 从 bat 文件(oracle、批处理)运行 sql 脚本
- javascript - Yet another "Failed to mount component: template or render function not defined" from Vue
- python - Executing Interactive SSH Command via Python script