измените значение логического поля в панели администратора в Django

#python #django-admin

Вопрос:

Коды моего models.py и admin.py являются следующие: models.py:

 from django.db import models
class Product(models.Model):
    name = models.CharField(max_length=50)
    price = models.IntegerField()
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    company = models.ForeignKey(Company, on_delete=models.CASCADE)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return '{}, {}'.format(self.name, self.company)

 

admin.py :

 from django.contrib import admin

from .models import Product


@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', 'category', 'is_active']
   # list_filter=['is_active']
    list_display_links = ['id', 'name']
    fieldsets = (
        ('Identification', {
            'fields': ('name', 'price','is_active')
        }),
        ('Details', {
            'classes': ('collapse',),
            'fields': ('category', 'company')
        }),
    )
    actions=['make_inactive']
    def make_inactive(self, request, queryset):
        queryset.update(is_active=False)
    make_inactive.allow
        
 

И вывод этого кода в модели администратора выглядит следующим образом

цена 1

как я должен изменить свой код, чтобы он выглядел как на следующем рисунке (разница в флажке столбца is_active): рис2

Ответ №1:

мы можем сделать столбец is_active редактируемым (опция флажка), добавив этот код

 list_editable=['is_active']
 

к классу ProductAdmin