我有一个模型,用于存储用户的登录注销时间和日期
import sys
import random
import pygame as pg
class Asteroid:
def __init__(self):
self.image = pg.Surface((50, 50))
self.image.fill((150, 60, 10))
self.pos = pg.math.Vector2(random.randrange(1230),
random.randrange(750))
self.vel = pg.math.Vector2(random.uniform(-5, 5),
random.uniform(-5, 5))
def update(self):
self.pos += self.vel
class Game:
def __init__(self):
pg.init()
self.screen = pg.display.set_mode((1280, 800))
self.clock = pg.time.Clock()
self.bg_color = pg.Color(20, 20, 20)
self.asteroids = [Asteroid() for _ in range(10)]
self.done = False
def run(self):
while not self.done:
for event in pg.event.get():
if event.type == pg.QUIT:
self.done = True
for asteroid in self.asteroids:
asteroid.update()
self.screen.fill(self.bg_color)
for asteroid in self.asteroids:
self.screen.blit(asteroid.image, asteroid.pos)
pg.display.flip()
self.clock.tick(30)
Game().run()
pg.quit()
sys.exit()
现在我需要在日期和用户名字段中搜索此模型。我有一个表单,其中包含 date_from , date_to 和用户名作为输入。任何字段都可以为空。如果用户名 空白,则会返回所有结果。现在,实现所需查询集的查询集是什么。
答案 0 :(得分:1)
这应该做的工作:
if not username:
return LoginLogout.objects.all()
else:
return LoginLogout.objects.filter(date__gte=date_from,
date__lte=date_to,
username=username)
答案 1 :(得分:1)
我需要通过字段日期和用户名搜索此模型。我有一个表单,它将date_from,date_to和username作为输入。
您想了解Django's query expressions。
events = LoginLogout.objects.filter(
username=username,
date__ge=date_from,
date__le=date_to,
)
任何字段都可以为空。如果用户名为空,则将返回所有结果。
这些都是特殊情况,应该在代码中表示。
filter_args = {}
if username:
filter_args['username'] = username
if date_from:
filter_args['date__ge'] = date_from
if date_to:
filter_args['date__le'] = date_to
events = LoginLogout.objects.filter(**filter_args)
答案 2 :(得分:0)
你必须使用很多,否则......
我只是给你查询
# Case 1: All res:
res = LoginLogout.objects.all()
# Case 2: date_to is blank:
res = LoginLogout.objects.filter(login_time__gt = date_from)
# Case 3: date_from is blank
res = LoginLogout.Objects.filter(logout_time__lt = date_to)
# Case 4: all value
res = LoginLogout.Objects.filter( Q(username= username) & Q(login_...) & Q(logout_...)
# Or:
res = LoginLogout.Objects.filter(username= username, login_time__gt = ...)
答案 3 :(得分:0)
试试这个:
from django.db.models import Q
if username or date_from or date_to:
LoginLogout.objects.filter(
Q(username=username),
Q(date__gt='date_from'),
Q(date__lt='date_to')
)
else:
LoginLogout.objects.all()