You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

29 lines
814 B

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
# 默认items为空
def empty_items():
return {'items': []}
class Profile(models.Model):
# 与User外键链接
user = models.OneToOneField(User, on_delete=models.CASCADE)
# 待办事项的json字段
items = models.JSONField(default=empty_items)
# 每当User创建或者保存时通知对应的@receiver装饰的函数
# 创建或保存对应的Profile模型
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()