如果满足数据库中的条件,请从列表写入Django DB?

时间:2018-04-20 09:57:50

标签: python django django-models

Django的新手,请耐心等待。我正在开发一个简单的链接聚合器站点。我有一个脚本从xml文件中提取链接和相关信息(标题,日期等)并将它们存储为列表。这是一个名为scraper.py的文件,位于我的项目应用文件夹news下。

scraper.py从XML文件生成一系列列表。 scaper.py代码基本上如下:

def MakeLists():
    ###lots of code to get to this point###
    ###returns the following series of lists###
    return Article_date, Article_link, Article_vote, Article_title, Article_publisher

这些输出对应于我的Django models.py文件,如下所示:

class Article(models.Model):
    title = models.TextField()
    publisher = models.URLField()
    link = models.URLField()
    date = models.DateField()
    pull_date = models.DateTimeField(auto_now=True)
    vote = models.IntegerField(default=1)

以下是制作我的主页的视图,我最近尝试将新的抓取数据放入我的数据库(数据收集在MakeLists()中):

class ArticleList(ListView):
    model = Article
    context_object_name = 'Articles'
    pull_date = Article.objects.aggregate(Max('pull_date'))

    def get_new_db_stuff(self):
        check_time = datetime.datetime.now()-datetime.timedelta(hours=4)
        if pull_date > check_time: #i.e., more than 4 hours ago
            Article_date, Article_link, Article_vote, Article_title, Article_publisher = MakeLists()

            for i in range(0, len(Article_link)):
                if Article.object.filter(link=Article_link[i]).exists()==False:
                    a = Article(link=Article_link[i], date=Article_date[i], vote=Article_vote[i],
                                title=Article_title[i], publisher = Article_publisher[i])
                a.save()

问题在于它似乎没有做任何事情......没有任何内容写入数据库。我在运行服务器或点击页面时没有弹出错误。

问题: 1.如何检查是否有任何操作?即,弄清楚是否正在创建变量等? 2.我的想法是我在查询,但是如何排除故障呢?

1 个答案:

答案 0 :(得分:0)

  1. 这是实施此类解决方案的错误地方。最好将代码全部放在一个单独的文件中,然后将其放在一个文件夹结构中:

    APP_NAME>管理>命令> file_name.py

  2. 通过将其置于此结构中,它可以从manage.py shell运行,也可以设置为chron作业(更好)。

  3. 进行比较

    如果Article.objects.filter(link = Article_link [i])。exists()== False:

  4. 工作正常。