Илья, еще раз день Вам добрый!
По поводу кода - ошибки ушли (поправил как смог), но вот код почему-то не заработал.
Может из-за того, что не может определить Usera или Group - они не проставляются почему-то...
вот мой models.py:

class Article(models.Model):
    number_at = models.CharField('Номер заказа', max_length=20, default='')
    user = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name='Имя Менеджера', blank=True, null=True)
    group_user = models.ForeignKey(Group, on_delete=models.PROTECT, verbose_name='Имя группы', null=True)
    created_at = models.DateTimeField('Дата создания заказа', auto_now_add=True)
    modified_at = models.DateTimeField('Дата внесения изменения', auto_now=True)
    contragent = models.CharField('Контрагент', max_length=50, blank=True, null=True)
    delivery_address = models.CharField('Адрес поставки', max_length=80, default='', blank=True, null=True)
    label = models.CharField('Наименование', max_length=50, default='', blank=True, null=True)
    packing = models.CharField('Фасовка', max_length=25, default='', blank=True, null=True)
    quantity = models.IntegerField('Количество, (кг.)', default='0', blank=False, null=True)
    palletizing = models.ForeignKey(Category, on_delete=models.PROTECT, verbose_name='Паллетирование', blank=True, null=True)
    output = models.CharField('Выгрузка', max_length=15, default='', blank=True, null=True)
    output_at = models.DateTimeField('Дата отгрузки', blank=True, null=True)
    price = models.IntegerField('Целевая цена доставки (руб.)', blank=True, null=True)
    is_signed = models.BooleanField('ДС подписано', default=False)
    delivery_type = models.CharField('Тип доставки', max_length=25, default='', blank=True, null=True)
    production_date = models.DateTimeField('Дата производства', blank=True, null=True)
    day_part = models.CharField('день или ночь', max_length=5, default='', blank=True)
    product_is_ready = models.BooleanField('Готовность продукта', default=False, blank=True, null=True)
    pack_is_ready = models.BooleanField('Готовность фасовки', default=False)
    packing_order = models.CharField('Порядок загрузки', max_length=15, default='', blank=True)
    delivery_planed_at = models.DateTimeField('Машина заказана на дату', blank=True, null=True)
    send_at = models.DateTimeField('Дата отправки факт', blank=True, null=True)
    transporter = models.CharField('Перевозчик', max_length=35, default='', blank=True)
    number_ts = models.CharField('Номер ТС', max_length=15, default='', blank=True)
    price_fact = models.IntegerField('Фактическая цена доставки (руб.)', blank=True, null=True)
    date_take = models.DateTimeField('Дата доставки', blank=True, null=True)

    def __str__(self):
        return str(self.number_at)

    class Meta:
        verbose_name = '=ЗАКАЗ='
        verbose_name_plural = '=ЗАКАЗЫ='

        permissions = (
            ('can_edit_manager_group', 'Can edit manager group of columns'),
            ('can_edit_upakovka_group', 'Can edit upakovka group of columns'),
            ('can_edit_transport_group', 'Can edit transport group of columns'),
        )

вот мой admin.py:

class ArticleAdmin(admin.ModelAdmin):
    save_on_top = True
    list_display = ('id', 'number_at', 'user', 'group_user', 'created_at', 'modified_at', 'contragent',
                    'delivery_address', 'label', 'packing', 'quantity', 'palletizing', 'output', 'output_at', 'price',
                    'is_signed', 'delivery_type', 'production_date', 'day_part', 'product_is_ready', 'pack_is_ready',
                    'packing_order', 'delivery_planed_at', 'send_at', 'transporter', 'number_ts', 'price_fact',
                    'date_take',)
    list_display_links = ('id', 'number_at', 'contragent', 'delivery_address', 'quantity')

    fields = ('number_at', 'user', 'group_user', 'contragent', 'delivery_address',
              'label', 'packing', 'quantity', 'palletizing', 'output', 'output_at', 'price', 'is_signed',
              'delivery_type', 'production_date', 'day_part', 'product_is_ready', 'pack_is_ready', 'packing_order',
              'delivery_planed_at', 'send_at', 'transporter', 'number_ts', 'price_fact', 'date_take',)
    readonly_fields = ('number_at', 'contragent', 'delivery_address',
                       'label', 'packing', 'quantity', 'output', 'output_at', 'price', 'is_signed',
                       'delivery_type', 'production_date', 'day_part', 'product_is_ready', 'pack_is_ready',
                       'packing_order',
                       'delivery_planed_at', 'send_at', 'transporter', 'number_ts', 'price_fact', 'date_take',)

    manager_group_fields = ('number_at', 'user', 'group_user', 'contragent',
                            'delivery_address', 'label', 'packing', 'quantity', 'palletizing', 'output',
                            'output_at', 'price', 'is_signed', 'delivery_type')
    upakovka_group_fields = ('production_date', 'day_part', 'product_is_ready')
    transport_group_fields = ('pack_is_ready', 'packing_order', 'delivery_planed_at', 'send_at',
                              'transporter', 'number_ts', 'price_fact', 'date_take')

    def get_readonly_fields(self, request, obj=None):
        base_readonly_fields = super().get_readonly_fields(request, obj)
        if request.user.has_perm('can_edit_manager_group'):
            self.fields = [f for f in base_readonly_fields if f in self.manager_group_fields]
        elif request.user.has_perm('can_edit_upakovka_group'):
            self.fields = [f for f in base_readonly_fields if f in self.upakovka_group_fields]
        elif request.user.has_perm('can_edit_transport_group'):
            self.fields = [f for f in base_readonly_fields if f in self.transport_group_fields]
        return self.fields


admin.site.register(Article, ArticleAdmin)

Даже и не знаю, что не так...
Просто у Админа все для чтения и у юзеров все для чтения.
Все права по группам распределил, всех юзеров разнес тоже по группам.
Но вот не работает.
Уж извините.

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Timeweb

Let me recommend you the excellent hosting on which EVILEG is located.

For many years, Timeweb has been proving his stability.

For projects on Django I recommend VDS hosting

View Hosting
NI

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:90points,
  • Rating points8
NI

C++ - Тест 003. Условия и циклы

  • Result:92points,
  • Rating points8
NI

C++ - Test 001. The first program and data types

  • Result:80points,
  • Rating points4
Last comments
D

Django - Tutorial 001. Deploying a site on Django + PostgreSQL + Gunicorn + Nginx

А почему нельзя? Где можно об этом почитать? Киньте, пожалуйста, в меня ссылкой.
D

Django - Tutoral 049. Optimizing Django Performance with a Real Project

Огромное спасибо вам за статью! Для меня стали открытием select_related и prefetch_related
t
  • t1m4
  • Feb. 24, 2021, 2:56 a.m.

Django - Tutorial 052. Redefining a User Model

В данном случае я заходил под superuser но все равно не появлялись эти поля

Django - Tutorial 001. Deploying a site on Django + PostgreSQL + Gunicorn + Nginx

Поднял сервис с помощью systemd, вот по этому мануалу: https://habr.com/ru/post/501414/
t
  • t1m4
  • Feb. 23, 2021, 7:11 a.m.

Django - Tutorial 052. Redefining a User Model

А как дать ему эти права?
Now discuss on the forum
  • BlinCT
  • March 6, 2021, 10:57 a.m.

Работа с QJsonObject и получение данных из него

Вопрос решен. Оказалось что я не очень внимательно прочитал описание метода root.take("devices") Оказывается он удаляте ключ, а занчит и все данные по нему. И по этому после этого…

Как совместить таблицу и дерево в Qt

Добрый день. Имеется таблица QTableView, нужно у некоторых строк сделать возможность раскрытий, как в QTreeVidget и отоборажать в них аналогичные строки. Скажите пожалуйста, как это мо…
J

не получаеться добавить списки в списокб ошибка в петле

Hello dear, Flexible discounts for every order == >>> Sign up for free !!! <<< As with any skill, the key to learning how…
KM

Не отдаётся статика на виртуальной машине

В итоге выставил 775 на все файлы проекта и всё заработало. Но я не уверен, что так правильно.
About
Services
© EVILEG 2015-2020
Recommend hosting TIMEWEB