创建我的模型实例时出现信号问题
Signal Problem in creating instance of my model
请帮忙
我有个问题
我试图在用户注册时在我的代码中写入一个信号,为用户创建投资组合和个人资料,它可以正确创建用户和个人资料和投资组合但是当我想在管理员中创建市场时(因为只有管理员可以创建一个市场,而不是用户)我从这条线的信号中得到一个错误('instance.Portfolio.save()'),
我的信号
@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)
请帮忙
我有个问题
我试图在用户注册时在我的代码中写入一个信号,为用户创建投资组合和个人资料,它可以正确创建用户和个人资料和投资组合但是当我想在管理员中创建市场时(因为只有管理员可以创建一个市场,而不是用户)我从这条线的信号中得到一个错误('instance.Portfolio.save()'),
我的信号
@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)