Требуется создать параметризованную ссылку из формы в Django

Требуется получить id(pk) только что созданного объявления с помощью формы и, с помощью этого, создать параметризованную ссылку для параметризованной html страницы в Django.

Может кто знает из вас как это сделать? Заранее огромное спасибо.

Вот модель (models.py):

class Bb(models.Model):
    title = models.CharField(max_length=50, verbose_name='Tovar')
    content = models.TextField(null=True, blank=True, verbose_name='Opisanie')
    price = models.FloatField(null=True, blank=True, verbose_name='Cena')
    published = models.DateTimeField(
        auto_now_add=True,
        db_index=True,
        verbose_name='Opublikovano',
    )
    ps = models.TextField(null=True, blank=True, verbose_name='Po Skriptu')
    rubric = models.ForeignKey(
        'Rubric',
        null=True,
        on_delete=models.PROTECT,
        verbose_name='Rubrika',
    )

Вот форма (forms.py):

class BbForm(ModelForm):
    class Meta:
        model = Bb
        fields = (
            'title', 
            'content', 
            'ps', 
            'price', 
            'rubric',
        )

Вот контроллер-класс (views.py):

class BbCreateView(CreateView):
    template_name = 'bboard/create.html'
    form_class = BbForm
    success_url = 

success_url отсутствует, потому что, мне надо в него передать параметризованную get ссылку из id(pk) только что созданного объявления.


Ответы (1 шт):

Автор решения: 5c0rp

Вам нужно реализовать метод get_absolute_url для модели Bb. success_url в BbCreateView указывать не нужно. Пример из документации:

def get_absolute_url(self):
    from django.urls import reverse
    return reverse('people.views.details', args=[str(self.id)])

Вот еще описание использования такого подхода.

urls.py

urlpatterns = [
    path('api/v1/bb/', BbCreateView.as_view(), name='BbCreateView'),
    ...
]

models.py

from django.urls import reverse

class Bb(models.Model):
    ...
    def get_absolute_url(self):
        return reverse('BbCreateView', args=[str(self.id)])

views.py

class BbCreateView(CreateView):
    template_name = 'bboard/create.html'
    form_class = BbForm
→ Ссылка