电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

使用django自帶的user做外鍵的方法

瀏覽:93日期:2024-09-16 10:02:33

一、使用django自帶的user做外鍵,可以直接在model中使用。只需導入settings模塊

使用方法:在app應用(此處是Product應用)中的models.py文件,導入settings模塊

# Product / models.pyfrom django.db import modelsfrom django.contrib.auth import settingsclass Product(models.Model): productName = models.CharField(’產品名稱’, max_length=20) productDescription = models.CharField(’產品描述’, max_length=100) producer = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=’負責人’, on_delete=models.SET_NULL,blank=True, null=True) createTime = models.DateTimeField(’創建時間’, auto_now=True) class Meta: verbose_name = ’產品管理’ verbose_name_plural = ’產品管理’ def __str__(self): return self.productName

使用django自帶的user做外鍵的方法

二、自定義User Model

方法一、擴展AbstractUser類:只增加字段

app/models.py

from django.contrib.auth.models import AbstractUserfrom django.db import modelsclass NewUser(AbstractUser):new_field = models.CharField(max_length=100)

同時,需要在global_settings文件中設置:

AUTH_USER_MODEL = 'app.NewUser'

方法二、擴展AbstractBaseUser類AbstractBaseUser中只包含3個field: password, last_login和is_active. 擴展方式同上

# django.contrib.auth.base_userclass AbstractBaseUser(models.Model): password = models.CharField(_(’password’), max_length=128) last_login = models.DateTimeField(_(’last login’), blank=True, null=True) is_active = True REQUIRED_FIELDS = [] # Stores the raw password if set_password() is called so that it can # be passed to password_changed() after the model is saved. _password = None class Meta: abstract = True def __str__(self): return self.get_username() def save(self, *args, **kwargs): super().save(*args, **kwargs) if self._password is not None: password_validation.password_changed(self._password, self) self._password = None def get_username(self): '''Return the username for this User.''' return getattr(self, self.USERNAME_FIELD) def clean(self): setattr(self, self.USERNAME_FIELD, self.normalize_username(self.get_username())) def natural_key(self): return (self.get_username(),) @property def is_anonymous(self): ''' Always return False. This is a way of comparing User objects to anonymous users. ''' return False @property def is_authenticated(self): ''' Always return True. This is a way to tell if the user has been authenticated in templates. ''' return True def set_password(self, raw_password): self.password = make_password(raw_password) self._password = raw_password def check_password(self, raw_password): ''' Return a boolean of whether the raw_password was correct. Handles hashing formats behind the scenes. ''' def setter(raw_password): self.set_password(raw_password) # Password hash upgrades shouldn’t be considered password changes. self._password = None self.save(update_fields=['password']) return check_password(raw_password, self.password, setter) def set_unusable_password(self): # Set a value that will never be a valid hash self.password = make_password(None) def has_usable_password(self): ''' Return False if set_unusable_password() has been called for this user. ''' return is_password_usable(self.password) def get_session_auth_hash(self): ''' Return an HMAC of the password field. ''' key_salt = 'django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash' return salted_hmac(key_salt, self.password).hexdigest() @classmethod def get_email_field_name(cls): try: return cls.EMAIL_FIELD except AttributeError: return ’email’ @classmethod def normalize_username(cls, username): return unicodedata.normalize(’NFKC’, username) if isinstance(username, str) else username

到此這篇關于使用django自帶的user做外鍵的方法的文章就介紹到這了,更多相關django user做外鍵內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Django
相關文章:
主站蜘蛛池模板: 顶呱呱交易平台-行业领先的公司资产交易服务平台 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 耐高温硅酸铝板-硅酸铝棉保温施工|亿欧建设工程 | 馋嘴餐饮网_餐饮加盟店火爆好项目_餐饮连锁品牌加盟指南创业平台 | 喷播机厂家_二手喷播机租赁_水泥浆洒布机-河南青山绿水机电设备有限公司 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 济南办公室装修-厂房装修-商铺装修-工装公司-山东鲁工装饰设计 | 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 致胜管家软件服务【在线免费体验】| 微动开关厂家-东莞市德沃电子科技有限公司 | 行星齿轮减速机,减速机厂家,山东减速机-淄博兴江机械制造 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网 | 耙式干燥机_真空耙式干燥机厂家-无锡鹏茂化工装备有限公司 | 口臭的治疗方法,口臭怎么办,怎么除口臭,口臭的原因-口臭治疗网 | 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 微型气象仪_气象传感器_防爆气象传感器-天合传感器大全 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 液压压力机,液压折弯机,液压剪板机,模锻液压机-鲁南新力机床有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | AGV叉车|无人叉车|AGV智能叉车|AGV搬运车-江西丹巴赫机器人股份有限公司 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 【官网】博莱特空压机,永磁变频空压机,螺杆空压机-欧能优 | 脉冲除尘器,除尘器厂家-淄博机械 | EPK超声波测厚仪,德国EPK测厚仪维修-上海树信仪器仪表有限公司 | 搪玻璃冷凝器_厂家-越宏化工设备| 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 |