Вот моя проблема, когда пользователь входит в систему, он может видеть продукты, загруженные другим пользователем, но я пытаюсь показать, когда пользователь вошел в систему, они могут видеть только продукты, загруженные им *** **
views.py
from django.shortcuts import render, get_object_or_404, redirect
from .forms import ProductForm
from .models import Product
from django.contrib.auth.models import User
prodcut создать или загрузить
def product_create_view(request):
form = ProductForm(request.POST or None)
if form.is_valid():
form.save()
form = ProductForm()
context = {
'form': form
}
return render(request, "products/product_create.html", context)
обновление продукта
def product_update_view(request, id=id):
obj = get_object_or_404(Product, id=id)
form = ProductForm(request.POST or None, instance=obj)
if form.is_valid():
form.save()
context = {
'form': form
}
return render(request, "products/product_create.html", context)
попытался изменить в представлении списка, но при получении этой ошибки product_list_view () отсутствует 1 обязательный позиционный аргумент: 'user'
def product_list_view(request, user):
queryset = Product.objects.filter(user=request.user)
context = {
"object_list": queryset
}
return render(request, "products/product_list.html", context)
** сведения о продукте **
def product_detail_view(request, id):
obj = get_object_or_404(Product, id=id)
context = {
"object": obj
}
return render(request, "products/product_detail.html", context)
удаление продукта
def product_delete_view(request, id):
obj = get_object_or_404(Product, id=id)
if request.method == "POST":
obj.delete()
return redirect('../../')
context = {
"object": obj
}
return render(request, "products/product_delete.html", context)
это страница шаблона списка продуктов template / product.list.html
{% extends 'accounts/base.html' %}
{% block content %}
{% for instance in object_list %}
<p>{{ instance.id }} - <a href='{{ instance.get_absolute_url }}'>{{ instance.title }}</a></p>
{% endfor %}
{% endblock %}
вот ** ** models.py
from django.db import models
from django.urls import reverse
from django.conf import settings
from django.contrib.auth.models import User
class Product(models.Model):
title = models.CharField(max_length=120)
description = models.TextField(blank=True, null=True)
price = models.DecimalField(decimal_places=2, max_digits=10000)
summary = models.TextField(blank=False, null=False)
featured = models.BooleanField(default=False)
user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
def get_absolute_url(self):
return reverse("products:product-detail", kwargs={"id": self.id}) #f"/products/{self.id}/"
urls.py
urlpatterns = [
path('', product_list_view, name='product-list'),
path('create/', product_create_view, name='product-create'),
path('<int:id>/', product_detail_view, name='product-detail'),
path('update/<int:id>/', product_update_view, name='product-update'),
path('<int:id>/delete/', product_delete_view, name='product-delete'),
]