一种将解析后的XML内容保存到Django Mod的有效方法

2024-10-01 09:19:57 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的第一个问题,所以我会尽我最大的努力遵守问题指南。我也在学习如何编码所以请ELI5。在

我正在做一个django项目,它将XML解析为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()

在放射学实验室.xml是我从Radiolab Podcast Feed.本地保存的源

因为每当我使用python时,都会运行这段代码管理.py运行服务器时,解析后的xml内容会像我希望的那样发送到我的数据库,但每次运行服务器时都会发生这种情况,这意味着重复的记录。在

我希望有人能帮我找到一种方法,让这一切只发生一次,也希望有一个干燥的机制来添加不同的feed,这样它们就被解析并保存到数据库中,最好是通过表单提交的feed url。在


Tags: django代码模型selfobjectstitlemodelsfeed
1条回答
网友
1楼 · 发布于 2024-10-01 09:19:57

如果你不想每次都运行,就不要把它放进去模型.py. 唯一属于这里的是模型定义本身。在

对用户在站点上的操作做出响应时发生的事情会进入视图中。或者,如果你想从管理站点完成,它应该在管理员py文件。在

相关问题 更多 >