1

私は信号を持っています-

@receiver(post_save, sender=User)
def create_initial_story(sender,instance, signal, created, **kwargs):
    if created:
        Story(user = instance, title = 'Random Stories',
            description="Random stories",
            is_closed = False, is_random = True).save()

これはクールですべてですが、models.pyにこのシグナルを含めたくありません。

それはどういうわけか「二重インポート」されます、そして私はむしろそれが起こらないことを望みます。はい、私は信号が2回実行されるのを止める魔法のトリックについて知っていますが、それを信用していません。なぜ私のアプリは2倍の仕事をするのですか?クレイジー!

誰かが私が使うことを提案しdjango.db.models.get_modelました、しかし私はこれをする方法を知りません!私の試みはうまくいきませんでした-これが私が試したことです:

from django.db.models import get_model

@receiver(post_save, sendermodel('myapp','User'))
def create_initial_story(sender,instance, signal, created, **kwargs):
    if created:
        get_model('myapp','Story').(user = instance, title = 'Random Stories',
            description="Random stories",
            is_closed = False, is_random = True).save()

これにより例外が発生します-

「<ストーリー:ランダムストーリー>」を割り当てることはできません:「Story.user」は「ユーザー」インスタンスである必要があります。

それで!これを修正するにはどうすればよいですか?

4

1 に答える 1

3

あなたの問題はここにあります:

get_model('myapp','Story').(user = instance, title = 'Random Stories',
        description="Random stories",
        is_closed = False, is_random = True).save()

get_modelobjects.createモデル クラスを返すため、実際にインスタンスを作成する必要があります。save()そして、最後には必要ありません。試す:

get_model('myapp','Story').objects.create(user = instance, title = 'Random Stories',
        description="Random stories",
        is_closed = False, is_random = True)
于 2012-05-24T16:38:58.613 に答える