我想在序列号中反对id 1,2,3···。我写代码来抵制用户数据,
from django.db import models
import uuid
# Create your models here.
def get_next():
try:
return Users.objects.latest('pk').increment_num + 1
except:
return 1
class Users(models.Model):
id = models.UUIDField(primary_key=True, default=get_next, editable=False)
sex = models.CharField(max_length=100, null=True, default=None)
age = models.CharField(max_length=100, null=True, default=None)
但是当我试图抵制用户的数据时,
django.core.exceptions.ValidationError:["' 1'不是有效的UUID。"]
错误发生。
所以我重写了id = models.IntegerField(primary_key=True, default=get_next)
,但如果我拒绝多个用户的数据,只剩下id = 1的数据,我无法理解,但其他数据被删除了。我的代码有什么问题?我该如何解决这个问题?
答案 0 :(得分:0)
UUID不是数字,但您可以生成新的简单UUID
import uuid
from django.db import models
# Create your models here.
def get_next():
return uuid.uuid4()
class Users(models.Model):
id = models.UUIDField(primary_key=True, default=get_next, editable=False)
sex = models.CharField(max_length=100, null=True, default=None)
age = models.CharField(max_length=100, null=True, default=None)
默认情况下,Django将存储整数主键。为此,您需要删除一些代码。
from django.db import models
class Users(models.Model):
sex = models.CharField(max_length=100, null=True, default=None)
age = models.CharField(max_length=100, null=True, default=None)
等待数据库后端,它将是顺序的。
答案 1 :(得分:0)
你不需要uuid,因为它只是一个整数! ...否则请使用此
替换 id 字段id = models.UUIDField(primary_key=True, default=get_next, editable=False, autoincrement)
然后做
>>>python manage.py makemigrations
>>>python manage.py migrate