
Илья, еще раз день Вам добрый!
По поводу кода - ошибки ушли (поправил как смог), но вот код почему-то не заработал.
Может из-за того, что не может определить 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)
Даже и не знаю, что не так...
Просто у Админа все для чтения и у юзеров все для чтения.
Все права по группам распределил, всех юзеров разнес тоже по группам.
Но вот не работает.
Уж извините.

Fornex
Let me recommend you a great European Fornex hosting.
Fornex has proven itself to be a stable host over the years.
For Django projects I recommend VPS hosting
Following the link you will receive a 5% discount on shared hosting services, dedicated servers, VPS and VPN
View HostingShare on social networks
Donate
The EVILEG project has switched to a non-commercial basis and will develop solely on the enthusiasm of the site creator, the enthusiasm of users, donations and the hosting referral system
Thank you for your support
Available ways to support the project
PayPal
PatreonYandex.MoneyMore