在Django中创建用户帐户时,如何在数据库表中插入默认值?

时间:2019-05-25 10:03:34

标签: django python-3.x django-models django-views django-authentication

我正在使用postgre数据库,数据库中有10个通道。这是我的模型,其中channelId和userId为外键:

class Count(models.Model):
    userId = models.ForeignKey(User, on_delete=models.CASCADE)
    channelId = models.ForeignKey(News_Channel, on_delete=models.CASCADE)
    rate = models.PositiveIntegerField(default=0)

    def __str__(self):
        return self.channelId.name

    class Meta:
        ordering = ["-id"]

我想在创建用户帐户时将表中的所有3个channelId和费率值设置为0插入3行。 支持用户注册并获得userIid 99,然后在表中插入3行作为

userId channelId rate
99         1      0
99         2      0
99         3      0

可能是什么解决方案。

1 个答案:

答案 0 :(得分:1)

有2种可能的解决方案:

  1. 您可以使用信号。为您的AUTH_USER_MODEL创建一个post_save信号。通常用于在调用模型的save()方法之后执行一些逻辑。在该信号功能中,编写用于为所有通道和速率创建计数的逻辑。您可以从post_signal获取ATUTH_USER_MODEL的ID。

    引用https://docs.djangoproject.com/en/2.2/topics/signals/

  2. 创建用于为您的AUTH_USER_MODEL注册用户的逻辑,并在创建用户后,为所有频道和费率创建计数。