2012-05-24 17 views
1

我有一个信号 -django和get_model的信号?

@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

它获得“双进口”不知怎的,我有这个信号宁愿那不会发生。是的,我知道阻止信号运行两次的魔术,但我不相信这一点。为什么我的应用程序要做两次工作!疯!

有人建议我使用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”必须是“用户“例子。

所以!我能做些什么来解决这个问题?

回答

3

您的问题就在这里:

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

get_model返回模型类,所以你仍然需要objects.create实际创建一个实例。而且,最后你不需要save()。尝试:

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

嘿,任何想法,其中的django文档get_model是?我的搜索在他们的网站和谷歌产量nada! – bharal