please help
I have a problem
I'm trying to write a signal in my code when the user registers, create a portfolio and profile for the user, it can create a user and profile and portfolio correctly but when I want to create a market in admin(because only admin can create a market, not user) I got an error from my signal this line('instance.Portfolio.save()'),
My Signal
@receiver(post_save, sender=User)
def create_user_portfolio(sender, instance, created, **kwargs):
if created:
Portfolio.objects.create(user=instance)
@receiver(post_save, sender=Market)
def save_user_portfolio(sender, instance, **kwargs):
instance.Portfolio.save(market=instance)
And it is my portfolio model
class Portfolio(models.Model):
name = models.CharField(max_length=50, blank=False, null=True, default='portfolio')
user = models.ForeignKey('accounts.User', on_delete=models.DO_NOTHING, related_name='investor')
assets = models.ManyToManyField(Assets, related_name='assets')
My user model
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=255)
email = models.EmailField(max_length=255, unique=True, db_index=True)
is_verified = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_author = models.BooleanField(default=False)
is_admin = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
auth_provider = models.CharField(
max_length=255, blank=False,
null=False, default=AUTH_PROVIDERS.get('email'))
I have to say my portfolio and user are in a different app
And it's my market model maybe you need it
class Market(models.Model):
name = models.CharField(max_length=50, unique=True, blank=False, null=False)
currency = models.CharField(max_length=25, blank=False, null=False)
My error is: 'Market' object has no attribute 'Portfolio'
My problem was solved by the below code,
I needed to disconnect the signal before saving, then connect again
def post_save_product(sender, instance, **kwargs):
post_save.disconnect(post_save_product, sender=sender)
instance.save()
post_save.connect(post_save_product, sender=sender)
post_save.connect(post_save_product, sender= Market)