【问题标题】:'RelatedManager' object has no attribute 'save' - Django'RelatedManager' 对象没有属性'save' - Django
【发布时间】:2017-03-20 01:14:12
【问题描述】:

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

但是,当我尝试通过终端创建新的超级用户时,我会收到类似这样的错误...

AttributeError: 'RelatedManager' 对象没有属性 'save'

有人知道为什么创建一个新的超级用户会出现这种错误吗? 谢谢。

【问题讨论】:

    标签: python django


    【解决方案1】:

    没错——你不能直接在你的模型上调用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"
            )
    

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2018-02-21
      相关资源
      最近更新 更多