【发布时间】:2017-10-16 06:04:25
【问题描述】:
我有一个 Django 应用程序,旅行者“请求”当地人带他出去旅行。出去后,给对方留下参考,提一下是否玩得开心,还有一些文字说明。
我想在主页上自动显示旅行者和当地人已经见面并互相留下参考的最后两个请求。
目前数据来自人口脚本。
这是请求模型:
class Request(models.Model):
"""traveler requests local to take her out upon liking her profile"""
traveler = models.ForeignKey(User, related_name='traveler_requests')
local = models.ForeignKey(User, related_name='local_requested')
message = models.CharField(max_length=500)
date = models.DateField()#date of excursion
local_approval = models.BooleanField(blank=True)
这是参考模型:
class Reference(models.Model):
author = models.ForeignKey(User, related_name='referencer')#can be local or traveler
referenced = models.ForeignKey(User, related_name='referencee')#can be local or traveler
description = models.CharField(max_length=500, default="default reference")
fun = models.BooleanField() #did you have fun with the person or not?
date = models.DateField(default=datetime.datetime.now())#in order to pull the last ref on index page
local = models.BooleanField(default=True) #Is the author a local ?
这是我实现我想要的东西的尝试:
reqs = Request.objects.filter(local_approval=True).order_by('-date')[:2]
for i in range(len(reqs)):
local_references_traveler = Reference.objects.filter(fun=True, author=reqs[i].local, referenced=reqs[i].traveler, local=True).latest()
traveler_references_local = Reference.objects.filter(fun=True, author=reqs[i].traveler, referenced=reqs[i].local, local=False).latest()
但是,这通常会带回最后两个请求(按日期),我想返回最后两个请求,其中两个人都为彼此留下了参考并提取这些参考。
这似乎可行的唯一方法是,如果我在填充脚本中填充大量引用,使应用看起来很糟糕。
谢谢!
【问题讨论】:
标签: python django django-models filter django-views