我不希望我的站点使用整数id作为主键,因为它们很容易通过simyply做I+1来确定 相反,我想使用UUID字段。所以我开始在我所有的模型上添加一个UUIDField作为id字段,如下所示:
class User(AbstractBaseUser):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
...
但自从我这么做之后,我就犯了这样的错误:
Reverse for 'profile' with keyword arguments '{'pk': UUID('68065cdb-c611-4865-bffc-32e00421bef1')}' not found. 1 pattern(s) tried: ['user/(?P\d+)/profile$']
我的网址.py看起来像:
^{pr2}$在模板.html公司名称:
^{3}$在视图.py在
def view_profile_external(request, pk=None):
if pk:
user = get_user_model().objects.get(pk=pk)
else:
user = request.user
args = {'external_user': user}
return render(request, 'app/profile_as_external.html', args)
我也需要换点东西吗?我不明白为什么UUIDField不能像django提供的pk或id那样解析整数字段。在
您可以使用uuid path converter在uuid上反转:
或者如果你在Django 1.11上:
^{pr2}$相关问题 更多 >
编程相关推荐