Profile作用:User內置的字段不夠完善,導致創建的用戶信息單一,Profile就是為了對User進行擴展,即豐富用戶信息
在models中創建Profile類,添加字段user與User形成OneToOne關系以及級聯刪除
on_delete=models.CASCADE
引入與信號相關的包
from django.dispatch import receiverfrom django.db.models.signals import post_save
裝飾器裝飾函數,User創建時信號觸發自動創建Profile的user字段并關聯;User保存時信號觸發,Profile自動保存
源碼
from django.db import models from django.contrib.auth.models import User #信號 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('創建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()
相關推薦:
在Django的session中使用User對象的方法
五步教你實現使用Nginx+uWSGI+Django方法部署Django程序
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com