【问题标题】:I am making an User(AbsrtactUser) model and I need to make a field that auto increments我正在制作一个 User(AbstractUser) 模型,我需要创建一个自动递增的字段
【发布时间】:2021-04-17 01:35:20
【问题描述】:
    class CustomUser(AbstractUser):
        email =  models.EmailField(unique=True,blank=True,max_length=254, verbose_name='email address')
        phone_number = models.IntegerField(blank=True,null=True,verbose_name="phone number")
        ids = models.UUIDField(blank=True,null=True,default=uuid.uuid4, editable=False)
        #parent_id = models.IntegerField(blank=True,null=True)
        role_id = models.IntegerField(null=True,blank=True)

如何将 role_id 创建为 auto_increment 字段。 我尝试制作 role_id 字段 AutoField 但这只是给了我一个错误,我们不能在一个模型中拥有 2 个 Autofield,我不想使用 django 默认 id 主键进行任何更改,因为我需要该字段。 我们可以将 (id primary key) 的引用提供给 (role id)..?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    您可以创建一个方法来为字段提供默认值。

     def auto_increment():
            last = CustomUser.objects.all().last()
            if not last:
                return 1
            return last.role_id + 1
        
        
    class CustomUser(AbstractUser):
            email =  models.EmailField(unique=True,blank=True,max_length=254, verbose_name='email address')
            phone_number = models.IntegerField(blank=True,null=True,verbose_name="phone number")
            ids = models.UUIDField(blank=True,null=True,default=uuid.uuid4, editable=False)
            role_id = models.IntegerField(default=auto_increment)
    

    另一种方法是覆盖模型的保存方法,并在保存新对象之前进行计算。

    【讨论】:

    • 感谢@Ajay Saini,它完美运行只是做了更改而不是返回 last.role_id 我返回了 last.id:非常感谢
    猜你喜欢
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2013-01-27
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多