如何在Django模型中将输入数据过滤到数据库中

时间:2018-07-13 00:03:08

标签: django

我有一个像下面这样的模型。无论输入哪个URL,我都想在将每个URL(例如numpy.float64http://)中删除协议之前,先将其存储到数据库中。有任何过滤功能吗?

https://

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式删除协议,然后将其保存在模型上。

import re
from .models import Store

address_before_cleaning = "https://www.google.com"
address_after_cleaning = re.sub('[\d\w]+://', '', address_before_cleaning)
store_object = Store()
store_object.url = address_after_cleaning
store_object.save()

this link中有关于re的文档

答案 1 :(得分:1)

您应该重写save方法,以便在模型字段存储在数据库中之前对其进行操作。例如:

class Store(models.Model):
    url = models.CharField(max_length=100)
    ...
    def save(self, *args, **kwargs):
        self.url = self.url.split('//')[-1]
        super(Store, self).save(*args, **kwargs)

有关从任何URL删除方案(http或https部分)的更兼容的方法,另请参见manual highlighting of text