Форум сайта python.su
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’
path(‘projects_list/project_update/<int:pk>’, views.ProjectUpdate.as_view(), name = ‘project_update’),
{% 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)
Офлайн
Quasar63
А что в Project и ProjectForm?
Офлайн
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') + ')')
class ProjectForm(forms.ModelForm): class Meta: model = Project fields = ['name', 'description', 'assigner', 'datebegin', 'dateend']
fields = [‘name’, ‘description’, ‘assigner’, ‘datebegin’, ‘dateend’],
Отредактировано Quasar63 (Фев. 14, 2020 10:58:59)
Офлайн
Quasar63
Могу только предположить, что ваша форма не валидируется, попробуйте методы form_valid и form_invalid
Офлайн
Похоже, форма даже не отсылается на сервер - в инспекторе кода в браузере полная тишина! Ни ошибок, ничего! Поэтому и до обработки form_invalid дело не доходит. (((
И, вообще, научите, как правильно отлаживать код в django? Может есть какие-то модули для логов и т.п.?
Офлайн
Quasar63
Ну а что в отрендереной странице? Посмотрите в браузере исходник.
https://pypi.org/project/django-debug-toolbar/
Офлайн
<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>
Офлайн
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 %}
Офлайн
Ох, и нифига себе!!! ))) Обычно за мной такого не замечается! Спасибо!
Есть подозрение на автоподставу в VS Code, но это слабое оправдание!
Правда, тут у меня очередная неприятность - после установки дебагера не запускается сервер:
NameError: name ‘debug_toolbar’ is not defined
Всё, вроде, сделал по мануалу. Впрочем, глядя на мою form этого утверждать нельзя. )))
Офлайн
С дебагером разобрался - забыл импортнуть )
Офлайн