У меня есть форма, которая сохраняет три входных значения в базу данных, 1) число, 2) цвет, 3) сделать.После того, как я нажму «отправить», другая подпрограмма должна немедленно отобразить эти значения.
Проблема в том, что я не могу отобразить последние значения, но вместо этого, когда значения были первоначально назначены, они не обновляются и остаются на первомприсвоенные значения.
Пытаясь решить эту проблему, в сообщениях предлагается обновить объект, например Django Получить последнюю запись из базы данных , я создал функцию, которую я вызывал в представлении после нажатия кнопки отправки,но без везения.
from django.forms import ModelForm
from django.views.generic import FormView
from django.urls import path, include
from django.urls import reverse
class Product(models.Model):
number = models.CharField(max_length=10)
color = models.CharField(max_length=10)
make = models.CharField(max_length=10)
objects = models.Manager()
class ProductModelForm(ModelForm):
class Meta:
model = Product
fields = ('__all__')
def database():
dbo = Product.objects.latest('id')
dbo.refresh_from_db()
return dbo
class ProductFormView(FormView):
form_class = ProductModelForm
template_name = 'form/test_form.html'
def form_valid(self, form):
form.save()
return super().form_valid(form)
def get_success_url(self):
database()
print(Product.objects.latest('id')) # just as a test
return reverse('product')
urlpatterns = [
path('', ProductFormView.as_view(), name='product'),
]
# <!DOCTYPE html>
# <html lang="en">
# <head>
# <meta charset="UTF-8">
# <title>Title</title>
# </head>
# <body>
# <form method="post" >
# {% csrf_token %}
# {{form}}
# <button type="submit" class="btn btn-default">Submit</button>
# </form>
# </body>
# </html>
У меня есть простая подпрограмма (db_connector.py). Я создаю связь между объектом базы данных и переменными, например (без какой-либо функции или класса):
number = database().number
color = database().color
make = database().make
Возможно, это неправильный способ сделать это, но отражает (возможно, наивную) попытку минимизировать запросы к базе данных, предлагая запросить один объект, а затем разбить этот объект на части и связать его с частями.
Проблема заключается в следующем:
- Я обновляю все значения в форме и нажимаю «отправить» (что работает) ипоследняя запись теперь находится на вершине базы данных.Я хочу получить этот объект (последние входные значения 'number', 'color' и 'make'. Однако вместо того, чтобы дать мне этот объект, я получаю более ранний объект. Несмотря на попытку "обновить" связанный объект (Product.objects.latest ('id')) он застрял с более ранним вводом (первый ввод).
Вопрос:
- Как мне сделать, чтобы всегда получать самые последние входные значения, когда я нажимаю кнопку отправки в моей форме (с обновленными значениями)?