Profile作用:User內(nèi)置的字段不夠完善,導(dǎo)致創(chuàng)建的用戶信息單一,Profile就是為了對(duì)User進(jìn)行擴(kuò)展,即豐富用戶信息
在models中創(chuàng)建Profile類,添加字段user與User形成OneToOne關(guān)系以及級(jí)聯(lián)刪除
on_delete=models.CASCADE
引入與信號(hào)相關(guān)的包
from django.dispatch import receiverfrom django.db.models.signals import post_save
裝飾器裝飾函數(shù),User創(chuàng)建時(shí)信號(hào)觸發(fā)自動(dòng)創(chuàng)建Profile的user字段并關(guān)聯(lián);User保存時(shí)信號(hào)觸發(fā),Profile自動(dòng)保存
源碼
from django.db import models from django.contrib.auth.models import User #信號(hào) from django.db.models.signals import post_save,post_init from django.dispatch import receiver class Profile(models.Model): user = models.OneToOneField(User,on_delete=models.CASCADE) birth = models.DateField(null=True,blank=True) def __str__(self): return self.user.username class Meta: db_table = 'profile' @receiver(post_save,sender=User) def create_user_profile(sender,instance,created,**kwargs): print('創(chuàng)建User') if created: Profile.objects.create(user=instance) @receiver(post_save,sender=User) def save_user_profile(sender,instance,**kwargs): print('保存User') instance.profile.save()
相關(guān)推薦:
在Django的session中使用User對(duì)象的方法
五步教你實(shí)現(xiàn)使用Nginx+uWSGI+Django方法部署Django程序
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com