Skip to main content
 首页 » 编程设计

python之'RelatedManager' 对象没有属性 'save'之Django

2024年08月20日32xiaohuochai

在 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" 
        )