作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Django 项目,其中除了标准的自动递增 ID 整数字段外,Thing 还具有唯一的 10 位 key 。我使用一个简单的随机数函数来创建它。 [我相信也有更好的方法来做到这一点]
创建事物时,会创建一个 10 位数的 key 。我使用 .validate_unique() 来检查 key 的唯一性。如果它不是唯一的,是否有一种简单的方法可以递归调用 key 生成器(makeKey())直到它通过?代码如下:
模型.py:
class Thing(models.Model):
name=models.CharField(max_length=50)
key=models.IntegerField(unique=True)
def makeKey():
key=''
while len(key)<10:
n=random.randint(0,9)
key+=`n`
k=int(key)
#k=1234567890 #for testing uniqueness
return k
def createThing(request):
if ( request.method == 'POST' ):
f = ThingForm(request.POST)
try:
f.is_valid()
newF=f.save(commit=False)
newF.key=makeKey()
newF.validate_unique(exclude=None)
newF.save()
return HttpResponseRedirect(redirect)
except Exception, error:
print "Failed in register", error
else:
f = ThingForm()
return render_to_response('thing_form.html', {'f': f})
最佳答案
这里不需要递归 - 一个基本的 while 循环就可以了。
newF = f.save()
while True:
key = make_key()
if not Thing.objects.filter(key=key).exists():
break
newF.key = key
newF.save()
关于Django,自动生成唯一的模型字段,如果不唯一则递归调用自动生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928016/
我有一个查询写成: Y.all('.myClass:checked'); 它在除 IE (8) 以外的所有方面都运行良好。我似乎无法让 ':checked' 与 IE 一起工作。是否可以像这样仅查询选
我有一个问题,很可能是一些丑陋的 CSS 错误,但我就是找不到解决方案(我尝试了一些更改也没有帮助)。 某些文本内超链接(不是全部!)在 Internet Explorer 中显示时没有以下空格。 h
我是一名优秀的程序员,十分优秀!