Django 4.1: Как установить значение по умолчанию поля slug модели Profile на имя пользователя?


Я создал модель профиля для [Django's default user model](https://docs.djangoproject.com/en/4.1/ref/contrib/auth/#user-model) и хочу создать slug для него, чтобы его можно было вызвать, используя имя пользователя, а не его id или pk, я пробовал это до сих пор, но ничего не добился, **Я не прошу вас завершить то, как я пытаюсь достичь этого, но если есть лучший способ сделать это, пожалуйста, скажите мне**.

models.py: ``py from django.db import models from django.contrib.auth.models import User from django.urls import reverse from django.template.defaultfilters import slugify

class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) bio = models.TextField(blank=True, null=True) profile_picture = models.ImageField(upload_to=user, blank=True) slug = models.SlugField()

def get_absolute_url(self):
    return reverse('details', kwargs={'slug': self.slug})

    
def save(self, *args, **kwargs):
    if not self.slug:
        self.slug = slugify(User.objects.get(user__id = 1).username)
    return super().save(*args, **kwargs)
urls.py:
```py
from django.urls import path
from django.contrib.auth.views import LogoutView

from .views import UserCreateView, UserLoginView, UserProfileCreateView

urlpatterns = [
    path('register/', UserCreateView.as_view(), name='signup'),
    path('login/', UserLoginView.as_view(), name='login'),
    path('logout/', LogoutView.as_view(), name='logout'),
    path('u/<slug:slug>/edit_profile/', UserProfileCreateView.as_view(), name='edit_profile')
]
Вернуться на верх