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
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()
|
|
|