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

How to put two different model's uuid and id in a same url?

我有两个不同的模型,由 ForeignKey 链接,一个包含特定的 uuid,另一个包含特定的 id。我希望能够将它们放在同一个 URL.

这是 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 模式应该是这样的:

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 应该是 [=40 中的 id =] 并且 Creation 应该是 uuid 因为每个用户可以有很多 Creations.

我怎样才能做到这一点?

你的问题比较难理解,但我认为你想要的是:

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

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

获取用户