Как использовать значение поля вместо pk в URL? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу показать имя пользователя или имя человека, для которого я хочу обновить данные, в URL вида обновления. Единственный метод, который я знаю, это отображение pk в URL. Есть ли способ заменить pk значением поля? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

вы можете использовать slug для этого. Вы можете установить слаг используя pip install django-autoslug Например:

from autoslug import AutoSlugField
class A(models.Model):
     field = models.CharField(max_length=250)
     slug = AutoSlugField(unique_with='id', populate_from='field')

В urls.py используйте слаг как это:

path('<slug>/..../', views...., name='....'),
2 голосов
/ 02 июля 2019

Да, вы можете просто определить slug или str часть в URL. Например:

# app/urls.py

from django.urls import path

from app import views

urlpatterns = [
    path('user/<b><str:username>/</b>', views.user_details),
]

и, на ваш взгляд, вы можете, например, запросить с полем username параметр URL username:

# app/views.py

from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404

def user_details(request<b>, username</b>):
    user = get_object_or_404(User<b>, username=username</b>)
    # ...
...