Создание разных администраторов, чтобы каждый мог видеть только те продукты, которые он вводит. - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу, чтобы разные продавцы могли видеть только свои товары на своем сайте ADMIN, добавлять товары, которые будут видеть только они (кроме главного менеджера). Я прилагаю модель товаров:

class Item(models.Model):
 ***seller = models.ForeignKey(Seller, on_delete=models.CASCADE)***
    name = models.CharField(max_length=20)
    manufacturer = models.CharField(max_length=20, blank=True)
    category = models.ForeignKey(Categories, on_delete=models.CASCADE)
    subcategory = models.ForeignKey(Subcategory, on_delete=models.SET_DEFAULT, default=types.item_types.GENERAL)
    slug = models.SlugField(max_length=200, db_index=True, blank=True)
    description = models.TextField(blank=True)
    image = models.ImageField(upload_to=r'ecommerce/pictures', blank=True)  # adding date to the path?
    price = models.DecimalField(max_digits=10, decimal_places=2, blank=True)
    stock = models.PositiveIntegerField(blank=True)
    available = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    sales = models.BooleanField(default=False)

Спасибо тем, кто может посоветовать мне.

1 Ответ

1 голос
/ 17 февраля 2020

Что вам нужно здесь - проверка разрешений и, в частности, разрешение на изменение модели администратора проверка. Это может быть что-то вроде этого:

class BankAccountAdmin(admin.ModelAdmin):
    ...

    def has_change_permission(self, request, obj=None):
        return obj is None or obj.seller == request.user

    def get_queryset(self, request):
        return Item.objects.filter(seller=request.user)

Это переопределит набор запросов и проверку разрешений для просмотра / редактирования только записей, связанных с продавцом.

Возможно, вы захотите расширить логи c чтобы разрешить суперпользователю список / изменение записей или / и добавить еще несколько специальных c разрешений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...