@robocop45
Only python

Реализую возможность редактирование поста, но не отображается форма, как исправить?

Задача: Реализовать возможность редактировать статью, но вместо того,чтобы отображать ранее заполненную форму, выводится данная картина: 63a457d7337d5374649168.png
views.py
#Редактировать вопрос(статью)
class EditUpdateView(UpdateView):
    model = Questions
    template_name = 'blog/add_question.html'

    form_class = QuestionForm

    def get_object(self, queryset=None):
        return Questions.objects.get(slug=self.kwargs.get("q_slug"))
#добавить вопрос(стаью)
def add_q(request):
    if request.method == 'POST':
        q_form = QuestionForm(request.POST)
        if q_form.is_valid():
            # print(q_form.cleaned_data)
            # q_form.save()
            connection_with_author = q_form.save(commit=False)
            connection_with_author.author = request.user
            connection_with_author.save()
            return redirect('home')
    else:
        q_form = QuestionForm()

    dict = {
        "q_form": q_form,

        'title': 'Вопрос'
    }
    return render(request, 'blog/add_question.html', dict)


urls.py
path('<slug:q_slug>/edit/', EditUpdateView.as_view(), name='edit')


forms.py
class QuestionForm(forms.ModelForm):
    class Meta:
        model = Questions
        fields =['q_name','slug', 'q_cat', 'q_text']


        widgets = {
            'q_name': forms.TextInput(attrs={'class': 'form-name'}),
            'slug': forms.TextInput(attrs={'class': 'form-slug'}),


        }
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['q_text'].widget.attrs.update({'id': 'text_test'})
        # self.fields['q_cat'].widget.attrs.update(size='40')


шаблон
<td valign="top" class="content">
    {% if user.is_authenticated %}
<!--    форма для добавления вопроса(поста) на страницу-->
<form action="" method="post" enctype="multipart/form-data" >
{% for f in q_form %}
    <div class="form-error">{{ f.non_field_errors }}</div>

    <p><label for="{{ f.id_form_label }}" >{{f.label}}: </label><p><pre>{{ f }}</pre></p>

<div class="form-error">{{ f.errors }}</div>
{% endfor %}
<!--<form enctype="multipart/form-data" method="post">-->
<!--   <p><input type="file" name="f">-->
<!--   <input type="submit" value="Отправить"></p>-->
<!--  </form>-->

<div id="text_test" >
<button  type="button" onclick="insert()">Вставить фото</button>
<button  type="button" onclick="insert(' <code></code> ')">Вставить код</button>
<button  type="button" onclick="insert(' <h1></h1> ')">Вставить заголовок</button>
</div>
<script>
    function insert (word) {
  let inp = document.querySelector('#text_test');
  let start = inp.selectionStart;
  inp.value = inp.value.substring(0, start) + word +
    inp.value.substring(inp.selectionEnd, inp.value.length)
    inp.focus();
    inp.setSelectionRange(start, start + word.length)
}

</script>


<!--<button  type="button" onclick="insert(' aloha ')">insert aloha</button>-->
<!--<input value='test'>-->

<!--<input  type="button" onclick="document.getElementById('text_test').innerHTML += html_to_insert;"-->
<!-- value = "Добавить код" />-->


    {% csrf_token %}
    <p><input type="submit" value="Задать вопрос"></p>

</form>
    {% else%}
    <h1>Зайдите на сайт</h1>
    {% endif %}
</td>


models
author = models.ForeignKey(User,on_delete=models.CASCADE,verbose_name='Владелец статьи', blank=True, null=True )
    q_name = models.CharField(max_length=255, verbose_name='Вопрос')
    slug = models.SlugField(max_length=255, unique=True, db_index=True, verbose_name='URL')  # unique= поле уникальное
    q_cat = models.ForeignKey('Category', on_delete=models.PROTECT,
                            verbose_name='Категория', null=True)  # PROTECT запрещает удалять categoty  у которых есть ссылки на Women
    q_text = models.TextField(blank=True, verbose_name='Контент', null=True)
    is_published = models.BooleanField(default=True, verbose_name='Состояние публикации')
    time_create = models.DateTimeField(auto_now_add=True, verbose_name='Время создания')

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

    def save(self, *args, **kwargs):
        self.slug = slugify(self.q_name)
        return super(Questions, self).save(*args, **kwargs)

    def __str__(self):
        return self.q_name


Заранее спасибо
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы