在 Django 中,我使用 @receiver 来保存一个名为 CampaignProfile 的模型对象,如下所示:
@receiver(post_save, sender=UserModel)
def save_campaign(sender, instance, created, **kwargs):
if created:
instance.CampaignProfile.save()
我创建了一个名为 UserModel 的自定义用户模型,它需要与 CampaignProfile 模型链接,其中 CampaignProfile 看起来像这样......
class CampaignProfile(models.Model):
user = models.ForeignKey(UserModel, related_name='CampaignProfile', on_delete=models.CASCADE, null=True)
campaign_title = models.CharField(max_length=50, verbose_name='Title')
但是,当我尝试通过终端创建一个新的 super 用户时,我会收到这样的错误...
AttributeError: 'RelatedManager' object has no attribute 'save'
有人知道为什么创建一个新的 super 用户会出现这种错误吗? 谢谢。
请您参考如下方法:
没错 - 您不能直接在模型上调用 save() - 您只能在对象实例上调用 save()。看起来您需要在创建用户后创建一些默认用户配置文件。试试这个:
@receiver(post_save, sender=UserModel)
def save_campaign(sender, instance, created, **kwargs):
if created:
CampaignProfile.objects.create(
user = instance,
title = "Profile default title"
)
