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

Мне нужна помощь в переопределении метода сохранения с изменением значения поля.

У меня есть такая структура:

models.py

class Category(models.Model):
    name = models.CharField(max_length=255, validators=[MinLengthValidator(3)])
    parent = models.ForeignKey('self', blank=True, null=True,
                               related_name='children',
                               on_delete=models.CASCADE
                               )
class Product(models.Model):
    name = models.CharField(max_length=255, validators=[MinLengthValidator(3)])
    to_category = models.ForeignKey(Category, on_delete=models.SET_NULL,
                                    blank=True, null=True,
                                    )
    to_categories = models.ManyToManyField(Category, blank=True,
                                           related_name='categories',
                                           )

    
    def save(self, *args, **kwargs):
        super(Product, self).save(*args, **kwargs)

Так что я не могу найти правильное решение для метода сохранения. Я могу выбрать категорию в поле "to_category" и категории в поле "to_categories", но мне нужно, чтобы если я выбрал одну из категорий в поле "to_category", а затем сохранил продукт, это выбранное поле должно быть автоматически выбрано в поле "to_categories".

Я нашел решение.

admin.py:

class ProductAdmin(admin.ModelAdmin):
   ...

   def save_related(self, request, form, formsets, change):
        super(ProductAdmin, self).save_related(request, form, formsets, change)
        category = Category.objects.get(id=form.instance.to_category.id)
        form.instance.to_categories.add(category)
Вернуться на верх