Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中使用信号的干酪饲料_Python_Django_Django Models_Signals - Fatal编程技术网

Python 在Django中使用信号的干酪饲料

Python 在Django中使用信号的干酪饲料,python,django,django-models,signals,Python,Django,Django Models,Signals,在这里,我定义了一个模型,用于在“models.py”中创建提要实例: class StreamItem(models.Model): content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() pub_date = models.DateTimeField() content_object = generic.GenericForeignKey('content

在这里,我定义了一个模型,用于在“models.py”中创建提要实例:

class StreamItem(models.Model):
  content_type = models.ForeignKey(ContentType)
  object_id = models.PositiveIntegerField()
  pub_date = models.DateTimeField()

  content_object = generic.GenericForeignKey('content_type', 'object_id')

  def get_rendered_html(self):
    template_name = 'streams/stream_item_%s.html' % (self.content_type.name)
    return render_to_string(template_name, { 'object': self.content_object })

def create_stream_item(sender, instance, signal, *args, **kwargs):
    # Check to see if the object was just created for the first time
    if 'created' in kwargs:
        if kwargs['created']:
            create = True

            # Get the instance's content type
            ctype = ContentType.objects.get_for_model(instance)

            pub_date = instance.pub_date

            if create:
                si = StreamItem.objects.get_or_create(content_type=ctype, object_id=instance.id, pub_date=pub_date)

# Send a signal on post_save for each of these models
for modelname in [Fest, College, Event]: 
    my_signal = dispatch.Signal()      
    my_signal.connect(create_stream_item, sender=modelname)
然后,我创建了获取提要的视图,如果我从管理站点创建StreamItem对象,这些视图就可以正常工作。但是,信号部分不仅仅起作用。我只是在学习,所以,我不明白我错在哪里。请帮助。

使用信号:


谢谢它成功了:D。你能解释一下我以前的代码有什么问题吗?@Monique,据我所知,什么都不做。当您创建自己的信号时使用。好的,谢谢!另外,我想让这个提要特定于用户,所以你能建议我如何为每个用户创建StreamItem吗?@Monique,我不明白你的意思。根据您发布的代码,
StreamItem
model中没有
user
Fk字段。请发布另一个问题和其他信息。以下是链接:
from django.db.models.signals import post_save

for model in [Fest, College, Event]:
    post_save.connect(create_stream_item, sender=model)