Как передать аргумент из url в form django?

Есть страница объявления, к которому нужно оставить комментарий. (адрес объявления содержит его id: http://localhost:8000/bboard/bb/10) введите сюда описание изображенияДобавление комментария происходит через форму, но она требует указания объявления.введите сюда описание изображения Мне нужно, чтобы при добавлении комментария к конкретному объявлению, его id из url автоматически передавалось в форму и не требовало указания объявления в ручную. ps: код содержит безуспешные попытки сделать это по советам в интернете

Код:

views.py
def new_comment(request, bboard_id):
    form = forms.CommentForm(initial={'bboard_id': bboard_id})
    context = {'form': form}
    return render(request, 'bboard/add_com.html', context)

models.py
class Bb(models.Model):
    title = models.CharField(max_length=50, verbose_name='Товар')
    content = models.TextField(null=True, blank=True, verbose_name='Описание')
    price = models.FloatField(null=True, blank=True, verbose_name='Цена')
    pub_date = models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Опубликовано')

class Comment(models.Model):
    author = models.CharField(max_length=30, verbose_name='Автор')
    content = models.TextField(verbose_name='Текст комментария')
    pub_date = models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Опубликован')
    bb = models.ForeignKey(Bb, on_delete=models.CASCADE, verbose_name='Объявление')


forms.py
class CommentForm(ModelForm):
    class Meta:
        model = models.Comment
        fields = ('author', 'content', 'bb')

    def __init_(self, bboard_id):
        super(CommentForm, self).__init__(self, bboard_id)
        self.fields['bb'] = models.Bb.objects.get(pk=bboard_id)


блок формы html
{% block content %}
  <h2>Добавление комментария</h>
  <form method="post">
      {% csrf_token %}
      {{ form.as_p }}
      <input type="submit" value='Добавить'></input>
  </form>
{% endblock %}

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

Автор решения: driver

Нашел решение. Реализовал контроллер-функцию вместо класса. А именно, вместо класса

class CommentForm(ModelForm):
    class Meta:
        model = models.Comment
        fields = ('author', 'content', 'bb')

    def __init_(self, bboard_id):
        super(CommentForm, self).__init__(self, bboard_id)
        self.fields['bb'] = models.Bb.objects.get(pk=bboard_id)

Функция:

def new_comment(request, bboard_id):
    if request.method == 'POST':
        form = forms.CommentForm(request.POST, initial={'bb': Bb.objects.get(pk=bboard_id)})
        if form.is_valid():
            form.save(commit=False)
            form.bb = bboard_id
            form.save()
            return HttpResponseRedirect('http://localhost:8000/bboard/')
        else:
            context = {'form': form}
            return render(request, 'bboard/add_com.html', context)
    else:
        form = forms.CommentForm(initial={'bb': Bb.objects.get(pk=bboard_id)})
        context = {'form': form}
        return render(request, 'bboard/add_com.html', context)

И сделал поле bb в forms.py скрытым:

class CommentForm(ModelForm):
    class Meta:
        model = models.Comment
        fields = ('author', 'content', 'bb')
        widgets = {'bb': HiddenInput()}
→ Ссылка