Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Не срабатывает кнопка в форме редактирования записи в БД [RSS Feed]

#1 Фев. 13, 2020 20:30:49

Quasar63
Зарегистрирован: 2020-01-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

Django 3.0.2

Коллеги, помогите!
Данные в форму подтягиваются, но по кнопке «Сохранить» сохранения изменений в БД не происходит.
Чую, что-то тут просто, но никак не получается. )
=========

view.py:
———

 from django.views.generic import View, TemplateView, ListView, DetailView
from django.views.generic.edit import UpdateView, DeleteView
class ProjectUpdate(UpdateView):
   model = Project
   model_form = ProjectForm
   fields = [name, description, assigner, datebegin, dateend]
   template_name = project_update.html
urls.py:
———
 path(projects_list/project_update/<int:pk>, views.ProjectUpdate.as_view(), name = project_update),

project_update.html:
———————
 {% block project %}
   <h1>Изменить проект</h1>
   <form method=»POST» class=»post-form» action=»»></form>
      {% csrf_token %}
      {{ form.as_p }}
      <button type=»submit» class=»save btn btn-primary»>Сохранить</button>
   </form>
{% endblock %}

Отредактировано Quasar63 (Фев. 13, 2020 20:32:55)

Офлайн

#2 Фев. 14, 2020 10:42:56

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

Quasar63
А что в Project и ProjectForm?



Офлайн

#3 Фев. 14, 2020 10:57:49

Quasar63
Зарегистрирован: 2020-01-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

models.py:

 class Project(models.Model):
    name = models.CharField(max_length=64)
    description = models.TextField()
    datebegin = models.DateField()
    dateend = models.DateField()
    assigner = models.ForeignKey('auth.User', on_delete=models.CASCADE, related_name='project_assigner')
    datecreate = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    def __str__(self):
          return (self.name + ' (' + self.datebegin.strftime('%d.%m.%Y') + ' - ' + self.dateend.strftime('%d.%m.%Y') + ')')

forms.py
 class ProjectForm(forms.ModelForm):
    class Meta:
        model = Project
        fields = ['name', 'description', 'assigner', 'datebegin', 'dateend']

Ещё, по совету знатоков, убрал экшн из формы в шаблоне, model_form заменил на form_class и пришлось из вьюхи убрать

 fields = [name, description, assigner, datebegin, dateend],
т.к. вылезло: Specifying both ‘fields’ and ‘form_class’ is not permitted.

Но ничего не изменилось. (

Отредактировано Quasar63 (Фев. 14, 2020 10:58:59)

Офлайн

#4 Фев. 14, 2020 11:38:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

Quasar63
Могу только предположить, что ваша форма не валидируется, попробуйте методы form_valid и form_invalid



Офлайн

#5 Фев. 14, 2020 13:12:43

Quasar63
Зарегистрирован: 2020-01-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

Похоже, форма даже не отсылается на сервер - в инспекторе кода в браузере полная тишина! Ни ошибок, ничего! Поэтому и до обработки form_invalid дело не доходит. (((
И, вообще, научите, как правильно отлаживать код в django? Может есть какие-то модули для логов и т.п.?

Офлайн

#6 Фев. 14, 2020 14:30:46

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

Quasar63
Ну а что в отрендереной странице? Посмотрите в браузере исходник.

https://pypi.org/project/django-debug-toolbar/



Офлайн

#7 Фев. 14, 2020 14:37:12

Quasar63
Зарегистрирован: 2020-01-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

 <body>    
    
    <h1>Изменить проект</h1>
    <form method="POST" class="post-form"></form>
        <input type="hidden" name="csrfmiddlewaretoken" value="75h0MQYsX6cc9dBI6UJ0WRYx25wpG8dz76LdLmS0KXGh27Rs1sdzXcHLwGIf2XDf">
        <p><label for="id_name">Name:</label> <input type="text" name="name" value="Проект №3" maxlength="64" required id="id_name"></p>
<p><label for="id_description">Description:</label> <textarea name="description" cols="40" rows="10" required id="id_description">
Это описание Проекта №3</textarea></p>
<p><label for="id_assigner">Assigner:</label> <select name="assigner" required id="id_assigner">
  <option value="">---------</option>
  <option value="1" selected>rolex</option>
  <option value="2">larimarit</option>
  <option value="3">larimar</option>
</select></p>
<p><label for="id_datebegin">Datebegin:</label> <input type="text" name="datebegin" value="31.01.2020" required id="id_datebegin"></p>
<p><label for="id_dateend">Dateend:</label> <input type="text" name="dateend" value="20.02.2020" required id="id_dateend"></p>
        <button type="submit">Сохранить</button>
    </form>
</body>

Офлайн

#8 Фев. 14, 2020 15:34:10

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

Quasar63
 <h1>Изменить проект</h1>
    <form method="POST" class="post-form"></form> !!!!!!!!!!!!!!!
        <input type="hidden" name="csrfmiddlewaretoken" value="75h0MQYsX6cc9dBI6UJ0WRYx25wpG8dz76LdLmS0KXGh27Rs1sdzXcHLwGIf2XDf">
        <p><label for="id_name">Name:</label> <input type="text" name="name" value="Проект №3" maxlength="64" required id="id_name"></p>
<p><label for="id_description">Description:</label> <textarea name="description" cols="40" rows="10" required id="id_description">
Это описание Проекта №3</textarea></p>
<p><label for="id_assigner">Assigner:</label> <select name="assigner" required id="id_assigner">
  <option value="">---------</option>
  <option value="1" selected>rolex</option>
  <option value="2">larimarit</option>
  <option value="3">larimar</option>
</select></p>
<p><label for="id_datebegin">Datebegin:</label> <input type="text" name="datebegin" value="31.01.2020" required id="id_datebegin"></p>
<p><label for="id_dateend">Dateend:</label> <input type="text" name="dateend" value="20.02.2020" required id="id_dateend"></p>
        <button type="submit">Сохранить</button>
    </form>

А вас не смущает место помеченное как !!!!!!!!!
Ваша форма пустая. У вас открывающий тег и тут же закрывающий.
И я даже понял почему

  {% block project %}
   <h1>Изменить проект</h1>
   <form method=»POST» class=»post-form» action=»»></form>!!!!!!!
      {% csrf_token %}
      {{ form.as_p }}
      <button type=»submit» class=»save btn btn-primary»>Сохранить</button>
   </form>!!!!!
{% endblock %}

Зачем же вы тег закрываете два раза?



Офлайн

#9 Фев. 14, 2020 16:21:13

Quasar63
Зарегистрирован: 2020-01-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

Ох, и нифига себе!!! ))) Обычно за мной такого не замечается! Спасибо!
Есть подозрение на автоподставу в VS Code, но это слабое оправдание!
Правда, тут у меня очередная неприятность - после установки дебагера не запускается сервер:
NameError: name ‘debug_toolbar’ is not defined
Всё, вроде, сделал по мануалу. Впрочем, глядя на мою form этого утверждать нельзя. )))

Офлайн

#10 Фев. 14, 2020 16:39:57

Quasar63
Зарегистрирован: 2020-01-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывает кнопка в форме редактирования записи в БД

С дебагером разобрался - забыл импортнуть )

Офлайн

  • Начало
  • » Django
  • » Не срабатывает кнопка в форме редактирования записи в БД[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version