zoukankan      html  css  js  c++  java
  • Django——User-Profile

    Profile作用:User内置的字段不够完善,导致创建的用户信息单一,Profile就是为了对User进行扩展,即丰富用户信息

    • 在models中创建Profile类,添加字段user与User形成OneToOne关系以及级联删除
      on_delete=models.CASCADE
    • 引入与信号相关的包
    from django.dispatch import receiver
    from django.db.models.signals import post_save
    • 装饰器装饰函数,User创建时信号触发自动创建Profile的user字段并关联;User保存时信号触发,Profile自动保存
    • 源码
       1 from django.db import models
       2 from django.contrib.auth.models import User
       3 #信号
       4 from django.db.models.signals import post_save,post_init
       5 from django.dispatch import receiver
       6 
       7 class Profile(models.Model):
       8     user = models.OneToOneField(User,on_delete=models.CASCADE)
       9     birth = models.DateField(null=True,blank=True)
      10 
      11     def __str__(self):
      12         return self.user.username
      13 
      14     class Meta:
      15         db_table = 'profile'
      16 
      17 
      18 @receiver(post_save,sender=User)
      19 def create_user_profile(sender,instance,created,**kwargs):
      20     print('创建User')
      21     if created:
      22         Profile.objects.create(user=instance)
      23 
      24 @receiver(post_save,sender=User)
      25 def save_user_profile(sender,instance,**kwargs):
      26     print('保存User')
      27     instance.profile.save()
  • 相关阅读:
    一些特殊的矩阵快速幂 hdu5950 hdu3369 hdu 3483
    HDU
    UVA-796 Critical Links 找桥
    HDU 4612 Warm up
    2017 ICPC乌鲁木齐 A Coins 概率dp
    HDU6223 Infinite Fraction Path bfs+剪枝
    Java基础知识学习(一)
    算法(一)
    面试题整理:SQL(二)
    面试题整理:SQL(一)
  • 原文地址:https://www.cnblogs.com/siplips/p/9648336.html
Copyright © 2011-2022 走看看