Добавление M2M на post_save - PullRequest
       9

Добавление M2M на post_save

0 голосов
/ 01 октября 2018

У меня есть объект с отношением m2m, и я хотел бы заполнить его после сохранения.

Проблема в том, что сигнал срабатывает, но команда add не работает.Я сделал те же шаги, используя оболочку Python, и она работала нормально.

class Event(models.Model):
  name = models.CharField(max_lenght=40)
  location = models.ManyToManyField('Location')

class Location(models.Model):
   address = models.CharField(max_lenght=60)


@receiver(post_save, sender=Event)
def populate_location(sender, instance, **kwargs):
   instance.locations.add(*Locations.objects.all())

Любая подсказка?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Я нашел решение.Я забыл упомянуть, что я пытался сохранить от администратора, и, похоже, это была существенная деталь, извините за это.

https://timonweb.com/posts/many-to-many-field-save-method-and-the-django-admin/

0 голосов
/ 02 октября 2018

Если вы хотите добавить все объекты, которые вы можете использовать set() вместо add, вы можете посмотреть документацию - https://docs.djangoproject.com/en/2.1/ref/models/relations/#django.db.models.fields.related.RelatedManager.set

Еще одно предложение, если вы используете add затем попробуйте напечатать instance.locations сразу после выполнения - instance.locations.add(*Locations.objects.all()) и опубликовать результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...