小编Tom*_*Rup的帖子

使用Q对象进行Django查询?

我有一个模特

class Employee_Type(models.Model):
    def __unicode__(self):
        return self.name
    name = models.CharField(max_length=200, verbose_name="employee type")

class Employee(models.Model):
    def __unicode__(self):
        return self.name
    name = models.CharField(max_length=200)
    type = models.ForeignKey(Employee_Type)
    address = models.CharField(max_length=500,blank=True, null=True)
    telephone = models.CharField(max_length=100, blank=True, null=True)
    fax = models.CharField(max_length=100, blank=True, null=True)
    email = models.EmailField(max_length=200, blank=True, null=True)
    active = models.BooleanField(default=True) 
Run Code Online (Sandbox Code Playgroud)

我需要查询这样的事情:

 employees = Employee.objects.filter(
                            Q(name__startswith=key_search) \
                            & Q(type__icontian= emp_type)#CAN I DO THIS?
                            Q(active=True)                            
                            )
Run Code Online (Sandbox Code Playgroud)

问题:对

Q(type__= emp_type) (type = models.ForeignKey(Employee_Type)) I cannot do this.
Run Code Online (Sandbox Code Playgroud)

这里有人请帮帮我?

django django-q

1
推荐指数
1
解决办法
3678
查看次数

Django中复杂Q对象过滤器查询的奇怪行为

您好我正在尝试为Django编写标记系统,但今天我在过滤器或Q对象(django.db.models.Q)中遇到了一个奇怪的行为.

我写了一个函数,将搜索字符串转换为Q对象.下一步是使用这些查询过​​滤TaggedObject.但不幸的是,我得到了一个奇怪的行为.

只搜索一个Tag元素:

当我搜索(id=20)=> Q: (AND: ('tags__tag__id', 20)) 并返回2个ID为1127和132的Taged Objects时

当我搜索(id=4)=> Q: (AND: ('tags__tag__id', 4)) 并且它还返回2个对象,但这次是1180和1127

这是重新设置的SQL查询:

SELECT "django_content_type"."id", "django_content_type"."name", "django_content_type"."app_label", "django_content_type"."model" 
FROM "django_content_type" 
WHERE ("django_content_type"."model" = slogan  AND "django_content_type"."app_label" = slogans ) 
ORDER BY "django_content_type"."name" ASC

SELECT "slogans_slogan"."id", "slogans_slogan"."headline", "slogans_slogan"."text", "slogans_slogan"."author"
FROM "slogans_slogan"
  INNER JOIN "htags_objecttagbridge" ON ("slogans_slogan"."id" = "htags_objecttagbridge"."object_id")
WHERE ("htags_objecttagbridge"."tag_id" = 4  AND "htags_objecttagbridge"."content_type_id" = 9 )
LIMIT 21
Run Code Online (Sandbox Code Playgroud)

使用'或'结合搜索两个标签:

直到这里一切都很好,但当我做一个更复杂的查询,如(id=4) or (id=20)=> Q: (OR: ('tags__tag__id', 4), ('tags__tag__id', 20)) 然后它返回4(!)对象1180,1127,1127,132

和SQL: …

django search filter django-q

1
推荐指数
1
解决办法
638
查看次数

Django - 如何将QuerySet转换为Q对象?

有没有办法在Qjango中将QuerySet转换为Q对象?

我的具体动机:我想从另一个QuerySet(qs_B)中减去一个QuerySet(qs_A).我能想到的唯一方法是使用exclude()和一个等同于qs_A的Q对象.

例:

def my_function(qs_A, qs_B):
    # Here I need to transform qs_A to a Q object q_obj_A
    qs_new = qs.exclude(q_obj_A)
    return qs_new
Run Code Online (Sandbox Code Playgroud)

django django-queryset django-q

1
推荐指数
1
解决办法
438
查看次数

如何使用 Q Objects 在 django 模型中查询 float/int 值或字符串?

Django 版本=1.8,IDE=pycharm,python 2.7

我有一个搜索表单,我想根据与产品标题或产品描述或产品价格匹配的字符串在模型中搜索和列出项目(“产品”)。

下面是我在 views.py 中的“searchitems”部分。我也很困惑下面的行在 get_queryset 函数中做了什么。干杯

   qs = super(ProductListView, self).get_queryset(*args,**kwargs)
Run Code Online (Sandbox Code Playgroud)

#

# Search inside model function
def get_queryset(self, *args, **kwargs):
    qs = super(ProductListView, self).get_queryset(*args,**kwargs)
    query = self.request.GET.get("q")
    if query:
        qs = self.model.objects.filter(

            Q(title__icontains=query) |
            Q(description__icontains=query) |
            Q(price=query)
        )
    return qs

class ProductListView(ListView):
    model = Product
    queryset=Product.objects.all()  #no need to define this as it is a default
    def get_context_data(self, *args, **kwargs):
        context = super(ProductListView, self).get_context_data(*args, **kwargs)
        return context
Run Code Online (Sandbox Code Playgroud)

下面是models.py

    from django.db import models
    from django.core.urlresolvers import reverse
    from …
Run Code Online (Sandbox Code Playgroud)

python django python-2.7 django-1.8 django-q

0
推荐指数
1
解决办法
4227
查看次数

如何调用模型方法?

我试图只显示不超过4天的对象.我知道我可以使用过滤器:

new = Books.objects.filter(pub_date__gt = datetime.now() - timedelta(days=4))
Run Code Online (Sandbox Code Playgroud)

但我真的想用一种模态方法进行锻炼.

该方法在模型Book中定义,称为published_recetnly.

所以我的问题是如何在views.py中调用模态方法?

这是我目前的代码:

views.py

def index(request):
    new = Books.objects.filter(pub_date__gt = datetime.now() - timedelta(days=4))
    return render_to_response('books/index.html', {'new':new}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

的index.html

 {% if book in new %}
    {{ book.title }}
 {% endif %}
Run Code Online (Sandbox Code Playgroud)

models.py

class Book(models.Model)
    pub_date = models.DateTimeField('date published')

    def published_recently(self):
        now = timezone.now()
        return now - datetime.timedelta(days=4) <= self.pub_date <= now
Run Code Online (Sandbox Code Playgroud)

python django django-models django-queryset django-managers

0
推荐指数
1
解决办法
619
查看次数

在Swift中计算不同的字符

我是swift的新手,我正在尝试count不同的characters,string但我的代码返回整个值String

对于例如:

var string aString = "aabb"
aString.characters.count()             //returns 5

counter = 0
let a = "a"

for a in aString.characters {
  counter++
}                                      //equally returns 5
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会发生这种情况以及我如何计算不同的字符

string for-loop character swift

0
推荐指数
2
解决办法
7931
查看次数

在按键上重定向?

所以我有一个网站,我正在寻找一种在用户按下Esc键时将用户重定向到另一个网页的方法。

html javascript keyboard-shortcuts

0
推荐指数
1
解决办法
3281
查看次数

TypeError:|:'bool'和'Q'不支持的操作数类型

我正在运行Django 1.7,并且TypeError: unsupported operand type(s) for |: 'bool' and 'Q'在尝试执行以下操作时遇到问题:

class PersonList(generic.ListView):
    template_name = "persons/list.html"
    model = Person
    queryset = Person.objects.filter(Q(field1__isnull=True | Q(field2__isnull=True)))
Run Code Online (Sandbox Code Playgroud)

django django-q

-2
推荐指数
1
解决办法
2565
查看次数

PHP中的For循环之谜

使用PHP 5.6,为什么这个代码输出

2
5
8
11
Run Code Online (Sandbox Code Playgroud)

代替

3
6
9
Run Code Online (Sandbox Code Playgroud)

for ($i = 0; $i < 10; $i++) {
    echo $i += 2 . "<br />";
}
Run Code Online (Sandbox Code Playgroud)

php

-3
推荐指数
1
解决办法
66
查看次数

php从一个句子创建两个单独的句子

我想在php中将一个句子中的两个句子分开.

对于前者 ABC先生擅长数学和科学.

将会

  1. ABC先生擅长数学

  2. ABC先生擅长科学

提前致谢

编辑:

可能是正则表达式.我正在尝试将段落转换为speret语句.然后单个语句转换两个子语句.使用以下正则表达式.

$str = "Mr. ABC is good in math and science. but he is poor in sport";
$sentences = preg_split('/(?<=[.?!;,])\s+(?=[a-z])/i', $str);
Run Code Online (Sandbox Code Playgroud)

我想计算文字的情绪.这就是我需要拆分这些陈述的原因.(积极声明的百分比是多少?)

php

-3
推荐指数
1
解决办法
56
查看次数