Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/64: Рейтинг темы: голосов - 64, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 4

Как изменить значение поля модели при нажатии кнопки, django?

08.06.2018, 12:55. Показов 13664. Ответов 6

Студворк — интернет-сервис помощи студентам
Модель имеет поле BooleanField(default = False).
Как изменить это поле в True при нажатии кнопки?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2018, 12:55
Ответы с готовыми решениями:

Изменение поля модели в БД при нажатии кнопки
Создаю веб-приложение для пиццерии. Нужно добавить действие: при нажатии на кнопку "Заказ доставлен", статус заказа должен...

При нажатии кнопки изменить текст и цвет текстового поля
Помогите, не работал с этим языком, а нужно срочно сделать один элемент для проги. В общем, при нажатии кнопки должен меняться текст и цвет...

Как изменить цвет кнопки при нажатии?
Доброго времени суток. Ребята, подскажите пожалуйста как изменить цвет кнопки при нажатии?

6
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
09.06.2018, 19:15
Собственно говоря, как всегда, - обработать post, найти нужную запись (возможно, на основе данных переданных в post), изменить поле на true.
0
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 4
09.06.2018, 19:28  [ТС]
models.py
Python
1
2
3
4
5
6
7
8
9
10
class Order(models.Model):
    user = models.ForeignKey(User, verbose_name="Пользователь",
                               on_delete=models.CASCADE,)
    category = models.ForeignKey(CategoryTicket, verbose_name="Категория",
                               on_delete =models.CASCADE, null=False)
    title = models.CharField("Тема", max_length=100)
    text = models.TextField("Текст", max_length=300)
    created = models.DateTimeField("Отправлена", auto_now=False, auto_now_add=True)
    comment = models.TextField("Комментарий", max_length=300, null=True, default=None)
    closed = models.BooleanField(default=False)
closed и есть то поле, которое нужно изменить

veiws.py
Python
1
2
3
4
class UpdateOrder(UpdateView):
    model = Order
    form_class = UpdateOrderForm
    template_name = "account/update_order.html"
forms.py
Python
1
2
3
4
5
6
7
8
class UpdateOrderForm(forms.ModelForm):
    class Meta:
        model = Order
        fields = ("driver", "comment", )
        widgets = {
            'driver': forms.Select(attrs={'class': 'form-control'}),
            'comment': forms.Textarea(attrs={'class': 'form-control'})
        }
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.06.2018, 04:26
И что, когда на update_order.html нажимаете на кнопку формы у вас данные не обновляются?

Добавлено через 2 часа 31 минуту
Вот сделал минимальный пример с updateview, все обновляется прекрасно:

models.py
Python
1
2
3
4
5
6
7
from django.db import models
 
 
class CyberModel(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    is_staff = models.BooleanField(default=False)
forms.py
Python
1
2
3
4
5
6
7
8
from django.forms import ModelForm
from .models import CyberModel
 
 
class UpdateForm(ModelForm):
    class Meta:
        model = CyberModel
        fields = '__all__'
urls.py
Python
1
2
3
4
5
6
7
8
9
10
11
from django.contrib import admin
from django.urls import path
from cyberforum.views import *
 
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', CyberModelList.as_view(), name="list"),
    path('create/', CyberModelCreate.as_view(), name="create"),
    path('detail/<int:pk>/', CyberModelDetail.as_view(), name="detail"),
    path('update/<int:pk>/', CyberModelUpdate.as_view(), name="update")
]
views.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from django.shortcuts import render
from django.urls import reverse_lazy
from django.views.generic import UpdateView, DetailView, CreateView, ListView
from .models import CyberModel
from .forms import UpdateForm
 
 
class CyberModelList(ListView):
    model = CyberModel
    template_name = 'index.html'
 
 
class CyberModelCreate(CreateView):
    form_class = UpdateForm
    template_name = 'create.html'
    success_url = reverse_lazy('list')
 
 
class CyberModelDetail(DetailView):
    model = CyberModel
    template_name = 'detail.html'
 
 
class CyberModelUpdate(UpdateView):
    model = CyberModel
    form_class = UpdateForm
    template_name = 'update.html'
    success_url = reverse_lazy('list')
create.html
HTML5
1
2
3
4
5
6
7
<html>
<form method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="BUTTON">
</form>
</html>
index.html
HTML5
1
2
3
4
5
6
7
8
9
10
<html>
    <p>Create new record <a href="{% url 'create' %}">here</a></p>
    <ul>
        {% for o in object_list %}
            <li><span style="{% if o.is_staff %}color:red{% endif %}">{{ o.first_name }}</span>
                (<a href="detail/{{ o.id }}">get details</a>)</li>
        {% endfor %}
    </ul>
 
</html>
detail.html
HTML5
1
2
3
4
5
6
7
<html>
<p>{{ object.first_name }}</p>
<p>{{ object.last_name }}</p>
<p>{{ object.is_staff }}</p>
 
click here to <a href="{% url 'update' object.pk %}">UPDATE</a>
</html>
update.html
HTML5
1
2
3
4
5
6
7
<html>
<form method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="BUTTON">
</form>
</html>
0
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 4
10.06.2018, 14:41  [ТС]
Суть в том, что в апдейте я добавляю недобавленные поля модели, и при этом мне нужно что бы булевое поле само поменялось на True без чек бокса

Добавлено через 58 секунд
А так у меня все обновлялось, просто хочу сделать без чек бокса, но не получается
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.06.2018, 18:08
Лучший ответ Сообщение было отмечено KeHsei как решение

Решение

в updateview

Python
1
2
3
4
    def form_valid(self, form):
        instance = form.save(commit=False)
        instance.closed = True
        return super(UpdateOrder, self).form_valid(form)
1
0 / 0 / 0
Регистрация: 08.12.2015
Сообщений: 4
10.06.2018, 21:10  [ТС]
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2018, 21:10
Помогаю со студенческими работами здесь

Как изменить картинку кнопки при ее нажатии
Всем привет, подскажите как изменить картинку кнопки при ее нажатии

Как изменить цвет кнопки при нажатии и при наведении?
Почему-то так он красит её прямо при создании, и никак не реагирует на нажатие : #include &lt;windows.h&gt; #include...

Как изменить цвет блоков при нажатии кнопки
Помогите, пожалуйста, справиться с заданием. Есть HTML &lt;html&gt; &lt;body&gt; &lt;h1&gt;Please change the color of the squares...

Как изменить цвет кнопки при нажатии на нее?
в процедуре procedure Form1.button2_Click(sender: Object; e: EventArgs); Пишу button2.backcolor:=red; и мне выдает ошибку...

Как изменить 2 переменные при нажатии 1 кнопки? Android studio
Доброго времени суток. Имеется вот такой вот кусок программы. Задача стоит в том, чтобы после нажатия кнопки переменная count...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru