由 slug 和 uuid 组成的 ID Django Rest Framework

ID which consists of slug and uuid Django Rest Framework

我想通过由 slug 和 uuid 组成的 id 来识别我的数据库项目,所以如果两个用户添加 f.e。物品名称:“Mercedes A40”,它们将以不同的 ID f.e 存储在数据库中。 “mercedes-a40-25b6e133”和“mercedes-a40-11ac4431”。

我应该在产品型号的 id 字段中输入什么?怎么组合呢?

id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
slug = models.SlugField(max_length=250, unique_for_date='published')

您可以使用两个字段存储它:UUIDFieldSlugField,并在 urls.py.

中使用两者

例如:

urlpatterns = [
    # ...,
    path('<strong><slug:slug>-<uuid:uuid></strong>/', some_view, name='name-of-the-view'),
    # …
]

然后在视图中,您可以使用以下方法检索数据:

from django.shortcuts import <strong>get_object_or_404</strong>

def some_view(request, slug, uuid):
    object = get_object_or_404(MyModel<strong>, slug=slug, id=uuid</strong>)
    # …

对于给定的 object,您可以使用以下方法将其转换为 URL:

class MyModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    slug = models.SlugField(max_length=250, unique_for_date='published')

    # …

    def get_absolute_url(self):
        return reverse('name-of-the-view'<strong>, kwargs={'uuid': self.id, 'slug': self.slug}</strong>)

或在模板中使用:

{% url 'name-of-the-view' uuid=object.id slug=object.slug %}