作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的模型:
class Product(models.Model):
name = models.CharField(max_length=5)
最佳答案
添加具有规范化名称的字段将是一个明智的解决方案,尽管我会通过覆盖 .save()
来填充它。在 Product
模型。
class Product(models.Model):
name = models.CharField(max_length=5)
normalized_name = models.CharField(max_length=5)
def save(self, *args, **kwargs):
self.normalized_name = self.normalize_name(name)
super().save(*args, **kwargs)
@classmethod
def normalize_name(cls, name):
return name.replace('-', '') # Maybe also remove spaces?
Product.objects.filter(normalized_name=Product.normalize_name('A-123'))
Product.objects.filter(normalized_name=Product.normalize_name('A123'))
class ProductManager(models.Manager):
def filter_by_normalized_name(name):
normalized_name = Product.normalize_name('A-123')
return self.get_queryset().filter(normalized_name=normalized_name)
class Product(models.Model):
...
objects = ProductManager
Product.objects.filter_by_normalized_name('A123')
Product.objects.filter_by_normalized_name('A-123')
Product.name
始终具有相同的结构,您可以标准化您的搜索词。
if search_term[1] != '-':
search_term = f"{search_term[0]}-{search_term[1:]}"
关于python - Django:有没有办法过滤模型并忽略存储的连字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59684315/
我是一名优秀的程序员,十分优秀!