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