Я предполагаю, что stock - это имя приложения / папки, которая содержит views.py, models.py, url.py.
views.py. См. здесь для документации по UpdateViews.
from django.views.generic import UpdateView
from django.utils import timezone
from stock.models import Product
from stock.forms import EditProductForm
Class ProductUpdateView(UpdateView):
model = Product
form_class = EditProductForm
success_url = reverse_lazy('stock:product_list')
template_name = 'stock/editproduct.html'
def form_valid(self, form):
form.instance.saler = self.request.user
form.instance.pub_date = timezone.now()
return super().form_valid(form)
urls.py
from stock import views
app_name = 'stock'
urlpatterns = [
path('product/update/<int:pk>', views.ProductUpdateView.as_view(), name='product_update'),
path('product/list', views.ProductListView.as_view(), name='product_list'
]
Приведенный ниже фрагмент можно добавить на html страницы продукта, которую вы хотите обновить, обычно это страница сведений о продукте. сгенерированный классом или функцией представления сведений.
На этой странице добавьте кнопку, чтобы перейти на страницу обновления, указав идентификатор продукта, который вы хотите обновить.
<a class="btn btn-outline-warning waves-effect" href="{% url 'stock:product_update' pk=product.pk %}"> Update product</a>