如何将两个不同模型的uuid和id放在同一个url中?

时间:2017-08-22 17:52:24

标签: python django django-urls

我有一个由ForeignKey链接的两个不同模型,其中包含某个uuid,另一个有id。我希望能够将这些内容放在同一个网址中。

这里是 models.py

class Creation(models.Model):
    ...
    uuid = models.UUIDField(default=uuid.uuid4, unique=True)

class User(models.Model):
    ...
    creation = models.ForeignKey(Creation, null=True)

以下是网址模式的样子:

url(r'^edit/(?P<id>\d+)/(?P<uuid>[^/]+)/$', views.edit, name='edit'),

Views.py

def edit(request, id, uuid):
    user_uuid = User.objects.filter(id=id)
    user = get_object_or_404(User, id=id, uuid=user_uuid.creation.uuid)

正如您所看到的那样,视图功能没有任何意义,因为我不知道我尝试做的事情应该如何工作,但User应该是网址和Creation应该是uuid,因为每个用户都可以拥有多个Creation

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您的问题很难理解,但我认为您想要的是:

user = User.objects.get(id=id)
creation = user.creation_set.filter(uuid=uuid)

当然要注意,因为uuid是唯一的,所以根本不需要在查询中使用用户ID;你可以完全从URL中删除它,只使用uuid来获取Creation,然后通过creation.user获取用户。