python - 在 post_save 上添加 M2M

标签 python django m2m

我有一个具有 m2m 关系的对象,我想在保存后填充它。

问题是信号被触发了,但是add命令不起作用。我确实使用 python shell 尝试了相同的步骤,并且效果很好。

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())

有什么提示吗?

最佳答案

如果您想添加所有可以使用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()) 并发布结果。

关于python - 在 post_save 上添加 M2M,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52598078/

相关文章:

javascript - 对于给定的正则表达式,R 正则表达式编译器的工作方式不同

Django - 更新 ModelForm 的某些字段

python - Django 中的 JSON 对象数组解析

python - Foo.objects.get(id=None) 返回 Foo 实例,有时

python Django : Use dumpdata for single model with m2m field and mySql

json - Django Rest Framework - M2M 通过

python - 用python解析JSON : blank fields

python - 为什么这段 python 代码可以工作?

python - 运行python脚本的不同方式