我想知道在django中创建相关Profile对象并将其分配给用户的最佳方式是什么。
有什么想法或链接可以查看吗?
最好的方法是使用signals
在models.py
中
class Profile(models.Model):
user = models.OneToOneField(User,
primary_key=True,
on_delete=models.CASCADE,
help_text=_('User (Required).'),
)
[..]
创建一个单独的signals.py
文件
from django.dispatch import receiver
from django.db.models.signals import pre_save, post_save
from .models import User, Profile
@receiver(post_save, sender=User, dispatch_uid='user.create_user_profile')
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User, dispatch_uid='user.save_user_profile')
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
然后在apps.py
中注册signals
(因为我们使用了@receiver
装饰器(
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
class AccountsConfig(AppConfig):
name = 'apps.accounts'
verbose_name = _('Accounts and Profiles')
def ready(self):
from . import signals
看看这个教程https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html