#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
И вывод этого кода в модели администратора выглядит следующим образом
как я должен изменить свой код, чтобы он выглядел как на следующем рисунке (разница в флажке столбца is_active):
Ответ №1:
мы можем сделать столбец is_active редактируемым (опция флажка), добавив этот код
list_editable=['is_active']
к классу ProductAdmin