Обновление поля в списке изменений администратора
У меня есть модель товаров, и я хочу вывести список на админку сайта с возможностью изменения порядка.
class Product(models.Model):
name = models.CharField(max_length=500)
is_active = models.BooleanField(default=True)
category = models.ForeignKey(
"categories.Category", on_delete=models.CASCADE, related_name="products"
)
description = models.TextField(null=True, blank=True)
ingredient = models.TextField(null=True, blank=True)
order = models.PositiveIntegerField(default=0)
rank = models.PositiveIntegerField(default=0)
price = models.DecimalField(max_digits=10, decimal_places=2, default=0)
objects = ProductManager()
class Meta:
verbose_name_plural = _("Products")
verbose_name = _("Product")
ordering = ["order"]
def __str__(self) -> typing.Text:
return self.name
Я решил упорядочить модель по полю order, которое нельзя редактировать на странице администратора, поэтому я хочу скопировать его значение в поле rank, которое я хочу сделать редактируемым на странице администратора, и когда я сохраню изменения, сделанные в rank, я хочу переопределить значения order новым значением из rank.
Вот как я регистрирую модель:
class ProductAdmin(SortableAdminMixin, TranslationAdmin):
inlines = [ImagesInline, NutritionsInline]
search_fields = ["name", "description"]
autocomplete_fields = ["category", "brand", "manufacturer"]
fieldsets = (
(
_("Details"),
{
"fields": (
"is_active",
"name",
"price",
"category",
"description",
),
},
),
(
_("Product Info"),
{
"fields": ("ingredient",),
},
),
)
list_display = ("order", "rank", "name", "category")
list_editable = ["rank"]
Я пытался переопределить get_queryset, но это не сработало.
У вас есть идеи, как это сделать?