Slug должен сохранить некоторый текст в админке, прежде чем он позволит мне увидеть мое содержимое

Я использую pk в своих урлах, но меняю его на slug. Но каждый раз, когда я добавляю новый вопрос в модель Question, страница выдает ошибку следующего вида: Reverse for 'view-Question' with arguments '('',)' not found. 1 pattern(s) tried: ['view/(?P[-a-zA-Z0-9_]+)/\Z'] но когда я захожу в админку и добавляю текст в поле slug, ошибка исчезает и я могу видеть свой контент в шаблоне viewQuestion и домашнем шаблоне. но когда я также добавил новый шаблон, ошибка все еще появляется в домашнем шаблоне. Как я могу решить эту ошибку без добавления текста в поле slug, и дайте мне url slug, пожалуйста.

class Question(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=100, blank=False, null=False)
    body = RichTextField(blank=False, null=False) 
    category = models.CharField(max_length=50, blank=False, null=False)
    slug = models.SlugField(unique=True, max_length=50)

    def __str__(self):
        return str(self.title)

def viewQuestion(request, slug):
    question = get_object_or_404(Question, slug=slug)
    answers = Answer.objects.filter(post_id=question)
    context = {'question':question, 'answers':answers}
    return render(request, 'viewQuestion.html', context)

class My_Question(LoginRequiredMixin, CreateView):
    model = Question
    fields = ['title', 'body', 'category']
    template_name = 'question.html'
    success_url = reverse_lazy('index')

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super (My_Question, self).form_valid(form)

мои урлы

path('view/<slug:slug>/', views.viewQuestion, name='view-Question'),

мой домашний шаблон:

    <div class="container">
    <div class="row justify-content-center">
        {% for question in list_of_question reversed %}
        <div class="col-md-4">
            <div class="card my-3">
                <div class="card-header">
                <p class="card-title">{{question.user.username.upper}}</p>
                </div>
                <div class="card-body">
                    <a href="{% url 'view-Question' question.slug %}" style="text-decoration: none;">
                        <p class="card-title">{{question.title}}</p>
                    </a>
                    <h5>{{question.category}}</h5>
                </div>
            </div>
        </div>
        {%endfor%}
    </div>
</div>

Я решил свою проблему, добавив функцию сохранения со slugify в модели и назначив slugify полю title.

from django.utils.text import slugify

class Question(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=100, blank=False, null=False)
    body = RichTextField(blank=False, null=False) 
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    slug = models.SlugField(unique=True, max_length=200)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Question, self).save(*args, **kwargs)
Вернуться на верх