[英]Creting feed using signals in Django
在这里,我定义了一个模型,用于在“ 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对象,该视图就可以正常工作。 但是, 信号部分不仅起作用。 我只是在学习,所以,我不明白我哪里错了。 请帮忙。
使用post_save
信号:
from django.db.models.signals import post_save
for model in [Fest, College, Event]:
post_save.connect(create_stream_item, sender=model)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.