我有一个模特
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编写标记系统,但今天我在过滤器或Q对象(django.db.models.Q)中遇到了一个奇怪的行为.
我写了一个函数,将搜索字符串转换为Q对象.下一步是使用这些查询过滤TaggedObject.但不幸的是,我得到了一个奇怪的行为.
当我搜索(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: …
有没有办法在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 版本=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) 我试图只显示不超过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) 我是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)
有人可以解释为什么会发生这种情况以及我如何计算不同的字符?
所以我有一个网站,我正在寻找一种在用户按下Esc键时将用户重定向到另一个网页的方法。
我正在运行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) 使用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中将一个句子中的两个句子分开.
对于前者 ABC先生擅长数学和科学.
将会
ABC先生擅长数学
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)
我想计算文字的情绪.这就是我需要拆分这些陈述的原因.(积极声明的百分比是多少?)
django ×6
django-q ×5
php ×2
python ×2
character ×1
django-1.8 ×1
filter ×1
for-loop ×1
html ×1
javascript ×1
python-2.7 ×1
search ×1
string ×1
swift ×1