Django 2.x PrimaryKey到UUID字段

2024-04-29 07:10:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我不希望我的站点使用整数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那样解析整数字段。在


Tags: pyidgetuuid站点requesthtmlargs