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)