Использование readonly_fields в Django Admin

Использование readonly_fields с Django Admin

Когда дело доходит до административной панели веб-приложений, Django предоставляет одно из самых мощных и удобных решений. Однако, в процессе работы с моделями, иногда возникает необходимость в отображении определенной информации в административной панели, недоступной для редактирования. В таких случаях на помощь приходит атрибут readonly_fields.

Для лучшего понимания применения readonly_fields, давайте рассмотрим пример на основе модели Shop с полями item, qty и price. Допустим, мы хотим сделать поле price доступным только для чтения в административной панели, чтобы избежать случайных изменений цен на товары.

# models.py
from django.db import models

class Shop(models.Model):
    item = models.CharField(max_length=255)
    qty = models.IntegerField()
    price = models.DecimalField(max_digits=10, decimal_places=2)

Теперь наша задача — сделать поле price только для чтения в административной панели. Для этого мы будем использовать атрибут readonly_fields в классе администратора.

# admin.py
from django.contrib import admin
from .models import Shop

class ShopAdmin(admin.ModelAdmin):
    list_display = ('item', 'qty', 'price')
    readonly_fields = ('price',)

admin.site.register(Shop, ShopAdmin)

Теперь давайте расскажем о нашем опыте использования readonly_fields. Этот атрибут позволяет установить поля, которые будут представлены в административной панели только для чтения. В нашем случае, благодаря этому, поле price будет отображаться, но его значение нельзя будет изменить.

Для меня это оказалось удобным решением, когда необходимо предоставить информацию для просмотра, но при этом исключить возможность случайного редактирования. Это особенно актуально в ситуациях, когда цены на товары или другие важные данные должны быть защищены от изменений, чтобы избежать ошибок.

Надеюсь, эта статья поможет вам использовать атрибут readonly_fields в Django Admin для более гибкого и безопасного управления вашими данными. Будьте творческими и продолжайте создавать удивительные веб-приложения с Django!

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий