1

保存後に Django モデルからデータを操作する必要がありますが、ManyToManyField にもアクセスする必要があります。

これが私がやりたいことです:

class Lab(Model):
  institute = ManyToManyField(Institute)

def post_save_lab(sender, instance, created, *args, **kwargs):
  if not instance.institute.all():
    # Data processing...

post_save.connect(post_save_lab, sender=Lab)

問題は、その時点で instance.institute.all() が常に空であるということです...ラボに研究所があるかどうかをどうやって知ることができますか?

ManyToMany 関係に要素が存在しない場合、データ処理を実行する必要があるため、信号 m2m_changed では問題が解決しないことを指定します。したがって、m2m_changed は呼び出されません。

ありがとう!

4

2 に答える 2

-1

save メソッドをオーバーライドできます。

class Lab(Model):
    institute = ManyToManyField(Institute)

    def save(self, *args, **kwargs):
        super(Lab, self).save(*args, **kwargs)
        # ... do something with the many to many
        # example:
        # if self.institute.all().exists():
        #     ...
于 2013-05-14T11:19:05.803 に答える