我想构建一个Django应用程序,允许使用他们的API在TagChimp上搜索电影,然后将正确的电影存储在Web应用程序的数据库中。以下是我认为它可以起作用的方式:
这是我的小应用程序应该做的:
我编写了一个传递电影标题的视图,它使用辅助对象从TagChimp中获取电影。它解析XML并创建一个字典数组,其中包含所有有趣的元数据并在页面上显示搜索结果。
下一步是用户选择正确的电影,然后将其转换为模型对象并插入数据库。
我是django的新手所以我不确定如何存储这个临时搜索结果,用户选择正确的搜索结果。有没有办法临时创建模型对象,只保存用户选择的模型对象?这是在一个视图中实现的,还是为流程的每个步骤创建单独的视图(输入搜索词 - 显示结果并让用户选择正确的 - 将电影插入数据库中)?
正如Bialeki所指出的,我有两种可能的方法来解决这个问题:
第一个选项可能更容易实现,但需要两个外部数据源请求,而第二个选项可能更快,因为只需要一个外部请求。
答案 0 :(得分:1)
简短的回答是,如果您创建Django模型,它不会将其持久保存到数据库中。所以你可以这样做:
def view(request):
results = search(request.GET['query'])
possible_movies = []
for result in results:
possible_movies.append(
Movie(title=result.title, year=result.year, picture=picture)
)
return render_to_response('view.html', possible_movies=possible_movies)
然后在你的视图中,当有人选择一个时,你需要传回一个ID来再次找到那些数据,或者传回标题,年份,图片等。如果有人提交表单,那么非常简单继续,然后将它们包含为隐藏字段。
关键是要将某些内容保存到数据库,您必须调用save
。
movie = Movie(title=title, year=year, picture=picture, **other_data)
# Movie is not currently saved.
print movie.id
# prints 'None'
movie.save()
# Movie is saved
print movie.id
# prints 123