这是我的第一个问题,所以我会尽力遵守问题指南。我也在学习如何编码所以请ELI5。
我正在开发一个将XML解析为django模型的django项目。特别是播客XML。
我目前在我的模型中有这个代码:
from django.db import models
import feedparser
class Channel(models.Model):
channel_title = models.CharField(max_length=100)
def __str__(self):
return self.channel_title
class Item(models.Model):
channel = models.ForeignKey(Channel, on_delete=models.CASCADE)
item_title = models.CharField(max_length=100)
def __str__(self):
return self.item_title
radiolab = feedparser.parse('radiolab.xml')
if Channel.objects.filter(channel_title = 'Radiolab').exists():
pass
else:
channel_title= radiolab.feed.title
a = Channel.objects.create(channel_title=channel_title)
a.save()
for episode in radiolab.entries:
item_title = episode.title
channel_title = Channel.objects.get(channel_title="Radiolab")
b = Item.objects.create(channel=channel_title, item_title=item_title)
b.save()
radiolab.xml是我从Radiolab Podcast Feed.
本地保存的Feed因为每当我运行python manage.py runserver时都会运行此代码,所解析的xml内容就会像我想的那样发送到我的数据库,但每次运行server时都会发生这种情况,这意味着重复记录。
我很乐意帮助找到一种方法来实现这一点,并且还有一种DRY机制可以添加不同的Feed,这样它们就会被解析并保存到数据库中,最好是通过表单提交的feed url。
答案 0 :(得分:0)
如果您不希望每次都运行它,请不要将它放在models.py中。唯一属于那里的是模型定义本身。
响应站点上的用户操作而发生的事件进入视图。或者,如果您希望从管理站点完成此操作,则应该将其放在admin.py文件中。