4

所以我能够使用 uuid 生成一个随机 id 到目前为止一切都很好但是当我尝试数据库时,我得到了相同的值

 def f():
    d = uuid4()
    str = d.hex
    return str[0:16]

class Q(models.Model):
  a = models.CharField(max_length=150)
  b = models.IntegerField(max_length=25)
  c = models.IntegerField(max_length=32 , default=0)
  d = models.ManyToManyField(Ans , related_name='aa')
  e = models.CharField(max_length=18 , default = f() ,unique=True )


class Ans(models.Model):
  sub = models.CharField(max_length=150) 


-----------------------------------------------------------------

我像这样插入

def ins(request):
     t =random.randint(0, 1000)
     p = Q(a = t , b=0 , c=0)
     p.save()
     return HttpResponse('Saved')

只是好奇这里到底发生了什么

旁注:如果我e.unique = False在获得新的 UUID 值之前设置了具有相同 e 值的 2-3

4

1 回答 1

13

您不应调用要传递给的函数default

e = models.CharField(max_length=18, default=f, unique=True)

仅供参考,根据docs,您应该传递一个值或可调用对象:

字段的默认值。这可以是一个值或可调用对象。如果可调用,则每次创建新对象时都会调用它。

于 2013-07-16T09:13:24.967 回答