2017-03-20 2 views
0

In Django, ich bin @receiver mit einem Modellobjekt speichern CampaignProfile wie so genannt:‚RelatedManager‘ Objekt hat kein Attribut ‚speichern‘ - Django

@receiver(post_save, sender=UserModel) 
def save_campaign(sender, instance, created, **kwargs): 
    if created: 
     instance.CampaignProfile.save() 

ich einen benutzerdefinierten Benutzermodell UserModel Namen erstellt haben die muss mit dem CampaignProfile Modell verknüpft werden, wo die CampaignProfile ungefähr so ​​aussieht ...

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

aber wenn ich versuche, einen neuen Super-User über den Terminal erstellen dann habe ich einen Fehler wie so ...

Weiß jemand, warum die Erstellung eines neuen Superbenutzers diese Art von Fehler hervorbringen würde? Danke.

Antwort

1

Das ist korrekt - Sie können save() nicht direkt auf Ihrem Modell aufrufen - Sie können save() nur auf Objektinstanzen aufrufen. Offenbar müssen Sie nach der Erstellung des Benutzers ein Standardbenutzerprofil erstellen. Versuchen Sie Folgendes:

@receiver(post_save, sender=UserModel) 
def save_campaign(sender, instance, created, **kwargs): 
    if created: 
     CampaignProfile.objects.create(
      user = instance, 
      title = "Profile default title" 
     ) 
Verwandte Themen