我目前正在尝试修改django-podcast模块,以便静态提供播客的 xml 文件,而不是在每次请求时生成。
每次修改、创建或删除剧集时,我都会尝试重写频道的 xml 文件,为此我使用django 信号。我想做的是这样的......
from django.db.models.signals import post_save, post_delete
from django.template.loader import render_to_string
def update_xml_file(sender, **kwargs):
f = open('channelrss.xml', 'w')
f.write(render_to_string('podcast/show_feed.html', {'object': sender.show}))
f.close()
class Show(models.Model):
...
class Episode(models.Model):
post_save.connect(update_xml_file)
post_delete.connect(update_xml_file)
...
show = models.ForeignKey(Show)
...
我一直遇到的问题是 sender.show 是一个ReverseSingleRelatedObjectDescriptor
而不是 Show 类的实际实例。我还尝试使用 sender.pk 作为主键值重新加载发件人对象,如下所示......
Episode.objects.filter(pk=sender.pk)
但显然 sender.pk 返回 aproperty object
而不是整数或字符串,我不知道如何获得它的值,所以我想我有两个问题。
如何检索与Show
关联的实例Episode
?到底是什么property object
,为什么 sender.pk 会返回它?
提前感谢您的回复!
乔什