我需要使用多个连接对一个查询进行排序,按正确表的any的日期排序-最新的在前。
因此,借用Peewee文档,假设我有一个用户,其中有Tweets和Facebook posts表。我如何创建一个查询,允许我列出用户的所有活动(Tweets和Posts),按日期排序,因此所有活动都是按照时间戳排序的,无论是Tweet还是Post?
import datetime
from peewee import *
db = SqliteDatabase(':memory:')
class BaseModel(Model):
class Meta:
database = db
class User(BaseModel):
username = TextField()
@property
def tweets_date_desc (self)
return self.tweets.order_by(Tweet.timestamp.desc())
@property
def posts_date_desc (self)
return self.posts.order_by(Facebook.timestamp.desc())
class Tweet(BaseModel):
content = TextField()
timestamp = DateTimeField(default=datetime.datetime.now)
user = ForeignKeyField(User, backref='tweets')
class Facebook(BaseModel):
content = TextField()
timestamp = DateTimeField(default=datetime.datetime.now)
user = ForeignKeyField(User, backref='posts')
很容易显示每个用户,他们的推文按日期排序,然后他们的帖子按日期排序。
user = User.get(User.username == 'huey')
print (user.username)
for t in user.tweets_date_desc:
print( t.timestamp, t.content)
for p in user.posts_date_desc:
print( p.timestamp, p.content)
但是,我不知道如何让这两种类型都按date_of(Tweet或Post)排序。
请注意,我的真实的数据不会像上面的简单示例那样合并到一个“活动”表中。
有什么想法吗
1条答案
按热度按时间jtw3ybtb1#
通常,你会用UNION来做这件事,例如。
如果您想加入,可以尝试使用COALESCE: