В настоящее время я пытаюсь изменить модуль django-podcast, чтобы файл xml подкаста был статически подан вместо того, чтобы сгенерировать его для каждого запроса.Доступ к объектам с отношением внешнего ключа в Django?
Я пытаюсь переписать XML-файл канала каждый раз, когда эпизод изменяется, создается или удаляется, и для этого я использую django signals. То, что я хотел бы сделать что-то вроде этого ...
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 возвращает property object
, а не целое число или строку, и я не знаю, как получить его значение, поэтому я думаю, у меня есть два вопроса.
Как я могу получить экземпляр Show
, связанный с Episode
? и что это за черт property object
и почему sender.pk возвращает его?
Спасибо заранее за ваш ответ!
Джош
Почему для этого не используется кеш Django? –