Сигнал Проблема при создании экземпляра моей модели
помогите пожалуйста
У меня проблема
Я пытаюсь написать сигнал в моем коде, когда пользователь регистрируется, создать портфель и профиль для пользователя, он может создать пользователя, профиль и портфель правильно, но когда я хочу создать рынок в администраторе (потому что только администратор может создать рынок, не пользователь) я получил ошибку от моего сигнала эта строка('instance.Portfolio.save(market=instance)'),
.
Мой сигнал
@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)
Это модель моего портфеля
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')
Моя модель пользователя
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'))
Я должен сказать, что мое портфолио и пользователь находятся в другом приложении
И это моя модель рынка, возможно, она вам нужна
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)
Моя ошибка заключается в следующем: У объекта 'Market' нет атрибута 'Portfolio'
Моя проблема была решена с помощью следующего кода,
Мне нужно было отключить сигнал перед сохранением, а затем снова подключить
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)