Насколько низка видимость модели для пользователя?

Как сделать так, чтобы только создатель модели мог ее видеть, а другие участники не могли ее видеть, то есть человек, создавший модель, мог видеть ее только со своего аккаунта, а с другого аккаунта человек видел только свой

У меня есть модель models.py

class Product(models.Model):
    username = models.CharField(max_length=100)
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    email = models.EmailField(max_length=254)
    image = models.ImageField(upload_to='media/', blank=True, null=True)
    company_name = models.CharField(max_length=100)


    def __str__(self):
        return self.username

views.py

class ProductListView(ListView):
    model = Product
    queryset = Product.objects.all()
    template_name = 'products_list.html'


class ProductDetailView(DetailView):
    model = Product

class NewProductView(LoginRequiredMixin,CreateView):
    template_name = 'product_form.html'
    model = Product
    form_class = NewProductForm
    success_url = reverse_lazy('product_list_page')

class EditProductView(LoginRequiredMixin ,UpdateView):
    template_name = 'product_form.html'
    model = Product
    form_class = EditProductForm
    success_url = reverse_lazy('product_list_page')

как сделать так, чтобы она была видна только тому, кто ее создал, чтобы другой пользователь видел только свою модель, которую он создал. Как ограничить видимость модели только для ее создателя?

В первую очередь в модель Product нужно включить внешний ключ для пользователя, это лучше, чем просто сохранять имя пользователя.

Модель продукта:

user = models.ForeignKey(User, on_delete=models.CASCADE)

Затем в представлении списка вы можете фильтровать с помощью:

def get_queryset(self):
    return Product.objects.filter(user=self.request.user).all()
Вернуться на верх