django - 我正在制作一个 User(AbsrtactUser) 模型,我需要创建一个自动递增的字段
问题描述
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 主键)的引用提供给(角色 id) ..吗?
解决方案
您可以创建一种方法来为该字段提供默认值。
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)
另一种方法是覆盖模型的保存方法并在保存新对象之前进行计算。
推荐阅读
- laravel - Laravel 如何测试 _Constructor
- swift - 如何正确获取用户坐标?
- html - 五个盒子,四个在角落,一个在中心
- linux - 如何获得本月的最后一天 Shell Scripting
- apache-kafka - 多个分区的Kafka本地状态存储
- angular - 通过存储的 Firebase 首选项过滤 Ionic 卡
- reactjs - 如何在 FullCalendar v4 中仅选择可见事件
- c# - 需要将从 JSON 文件解析的 List 对象分配给对象属性
- azure - 在 Azure 上部署 Microsoft 企业机器人模板时出错
- javascript - 使用 Google 脚本的 MWS 发布请求