我正在尝试在我的Android应用程序中创建一个由Django后端驱动的自动完成框。我在Django有一个模型,我有很多行(~5k)。我希望能够在我的Android应用程序中根据名称(连续字段)在此后端提供自动完成搜索。这样做的最佳方式是什么?
一些细节 - 行中的详细信息可能会不时更改或更改。 新的行添加将更加频繁。
我考虑过发送一个查询集(当用户打开一个应用程序时使用所有对象)会很慢并且消耗大量数据。
我不确定如何连续发出请求并及时处理响应,以便自动填充框填充而不会使服务器超载。
任何帮助将不胜感激。
答案 0 :(得分:0)
创建一个API,它将由android应用程序定期调用,它将提供来自数据库的所有更新数据。 API的输入将是最后的API调用时间。因此,API将提供该日期时间的更新对象。为此,您需要在模型中添加一个字段,即:
class YourModel(models.Model):
last_updated = models.DateTimeField(auto_now=True)
# Rest of the fields.
因此,当您使用上次api调用时间点击API时,您将在后端运行此查询:
query = YourModel.objects.filter(last_updated__gte = last_api_call_time)
然后将所有更新的数据存储在android app的数据库中。然后在android app的db中调用搜索。这样做的好处是,每当有人在您的应用的搜索框中键入单词时,您就不需要调用API。