Django QuerySet过滤字符串

时间:2016-11-25 09:53:23

标签: python django django-queryset

我有一些带有一些行的models.py文件,我想在我的HTML模板上返回与我的过滤器QuerySet对应的所有行。

class Parser:

def __init__(self, path):
    self.lexer = TemporalLogicLexer(FileStream(path))
    self.stream = CommonTokenStream(self.lexer)
    self.parser = TemporalLogicParser(self.stream)

def parse(self):
    # What should I do here? This method should return the parsed Clause object

我的html模板如下:

#models.py

def Test(request) :

    CarCollection = MyModel.objects.filter(car="old")

    context = {
        "CarCollection" : CarCollection
    }

    return render(request, 'car.html', context)

但是我的对象看起来像:

<!-- car.html -->

{% block content %} 
<ul>
{% for car in CarCollection %}
  <li>{{ car }}</li>
{% endfor %}
</ul>

{% endblock %}

所以我想在我的对象中隔离一个字符串(例如Volvo_old_car Audi_old_car Nissan_new_car old_Bentley )并返回带有该字符串的所有对象。但是这个字符串可以在开头,中间或结尾。

过滤器将返回:

old

我需要使用Regex来做到这一点吗?

先谢谢你

3 个答案:

答案 0 :(得分:1)

而不是

MyModel.objects.filter(car="old")

DO

MyModel.objects.filter(car__icontains="old")

这将告诉Django过滤掉MyModel字段包含car的所有old个对象。

P.S。你一定要检查PEP8 Python约定。这将帮助您编写易于为Python开发人员阅读的代码。

答案 1 :(得分:0)

您可以使用: 在查询中以endswith或istartswith结束。

CarCollection = MyModel.objects.filter(car__istartswith="old")

答案 2 :(得分:0)

您可以使用Django提供的字段查找来过滤您的查询集。

Django - Field lookups

angular.element(window).load(function () {...}