使用CharField作为字符串

2024-04-19 14:38:21 发布

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

我想创建一个模型,在这个模型中,我只放了两个字段,其余的字段是用API请求生成的,我已经生成了一个可使用的字符串格式的CharField。 所以现场是:

name = models.CharField(max_length=250, default='default')

我想把它通读一下:

^{pr2}$

把电影年作为一个领域。 提前谢谢


Tags: 字符串name模型apidefault电影models格式
1条回答
网友
1楼 · 发布于 2024-04-19 14:38:21

我认为自定义save将帮助您完成您想要做的事情。下面是一个例子:

class MyModel(models.Model):
    name = models.CharField(max_length=250, default='default')
    movieData = models.JSONField(blank=True)
    movieYear = models.CharField(max_length=250, blank=True)

    def save(self, *args, **kwargs):
        url = 'http://www.omdbapi.com/?t={}&y=&plot=short&r=json'.format(self.name.replace(' ', '+'))
        data = json.loads(str(urllib2.urlopen(url).read(),'utf-8'))
        self.movieData = data 
        self.movieYear = data['Year']
        super(MyModel, self).save(*args, **kwargs)

这将允许您请求从self.name属性(用+替换空格)创建一个URL,然后将响应存储在所需的字段中。在

如果您使用此解决方案,您将需要注意包含某种类型的错误处理-如果提供的名称无效,会发生什么情况?或者返回的数据由于某种原因没有Year键?或者API只是关闭了几分钟,所以您的有效请求没有收到任何响应?在

这还会在每次保存时向该API发出请求,这可能会影响应用程序的速度。只能在使用if self.pk is None创建新实例时强制执行自定义save中的逻辑。在

相关问题 更多 >