2012-05-24 2 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: Случайные истории>»: «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() в конце. Попытайтесь:

+0

эй, любые идеи, где django docs для get_model есть? мой поиск на их сайте и google дал nada! – bharal

Смежные вопросы