Я использую Django 1.7.11. У меня есть модели:Django, Добавить значение ManyToManyField при сохранении изменений модели
#I use django-categories app here
class Category(CategoryBase):
pass
class Advertisment(models.Model):
title = models.CharField(max_length=255, blank=True)
category = models.ForeignKey(Category, related_name='category')
all_categories = models.ManyToManyField(Category, blank=True, related_name='all_categories')
Мне нужно поле "all_categories" содержит "category" и все его родительские категории. Я пытался использовать post_save, но он не меняет никакого значения. Он даже не меняет заголовок. Это не сработает, когда я создаю интерфейс API-интерфейса модели и работает с пользовательской формой.
@receiver(post_save, sender=Advertisment, dispatch_uid="update_stock_count")
def update_stock(sender, instance, **kwargs):
categ = instance.category
instance.all_categories.add(categ)
for parent in categ.get_ancestors():
if parent not in instance.all_categories.all():
instance.all_categories.add(parent)
m2m_changed не помогает, поскольку ManyToManyField пуст и не имеет никаких изменений. Как добавить значение из поля ForeignKey в ManyToMany? Что делать, чтобы он работал в интерфейсе администратора.
Было ли ваше сообщение «post_save» вообще вызвано? –
Да, теперь я замечаю, что он отлично работает с пользовательской формой и не работает с интерфейсом администратора. Что я могу сделать с формой администратора?) – Swallow