我有一个具有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())
有任何提示吗?
答案 0 :(得分:0)
如果要添加所有可以使用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())
并发布结果。
答案 1 :(得分:0)
我找到了解决方案。我忘了提及我要从管理员保存的内容,这似乎是至关重要的细节,对此感到抱歉。
https://timonweb.com/posts/many-to-many-field-save-method-and-the-django-admin/