django /可以通过foreignKey过滤吗?

时间:2012-11-18 16:08:07

标签: django

有没有办法通过foreignObject过滤

查看我想修复的代码。

模型部分:

class UserProfile:
    blahblah

class FreeTime : 
    owner = models.ForeignKey(UserProfile)
    fromTime=models.DateField()
    toTime=models.DateField()

现在,编码部分

givenTime = date(2012,11,11)


freeTimes = FreeTime.objects.filter(fromTime__lte=givenTime, toTime__gte=givenTime)

users = []
for freeTime in freeTimes:
    users.append(freeTime.owner)

//todo : remove duplicated object of user

这完全是浪费代码。

如您所见,我想要的是找到在给定时间免费的用户。

任何减少代码的方法?

1 个答案:

答案 0 :(得分:3)

我认为这应该有效:

User.objects.filter(freetime__fromTime__lte=givenTime, freetime__toTime__gte=givenTime)

修改

正如@calvin Cheng所说,你应该FK到用户:

from django.contrib.auth.models import User


class FreeTime(models.Model): 
    owner = models.ForeignKey(User)
    fromTime=models.DateField()
    toTime=models.DateField()