0
from django.db import models 

class Reporter(models.Model): 
    pass 

class Article(models.Model): 
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE, null=True) 

に追加する今、私はいくつかのカスタムコードを実行したい、私は(bulk=Trueを変更せずに)どのようなメソッドをオーバーライドする必要がありますか?実行カスタムコードに多対一の関係

>>> new_article = Article.objects.create() 
>>> new_reporter = Reporter.objects.create() 
>>> new_reporter.article_set.add(new_article, bulk=True) 

答えて

0

答えは、これが条場合記事は記者

class Article(models.Model): 
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE) 

    def save(self, *args, **kwargs): 
     if self.reporter: 
      if not self.reporter.article__set: 
       #do your code here 
     super(Article, self).save(*args, **kwargs) 

に追加された最初の時間は、このコードを実行するコードを実行されます、あなたはあなたのアプリケーション上のオブジェクトを作成する方法に依存しますレポーターに

class Article(models.Model): 
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE) 

    def save(self, *args, **kwargs): 
     if self.reporter: 
      if not self.reporter.article__set is self: 
       #do your code here 
     super(Article, self).save(*args, **kwargs) 

がそれをテストしていませんが、ロジックは

+0

保存方法を鳴らすようで変化しています実行していない場合は、私は –

+0

@OskarPerssonを提供する例を作成するメソッドを作成して保存するためのショートカットであり、また、記者なしの記事を作成するとエラー – Mojimi

+0

が正しいはずです。私は記事モデルを更新しました。 –