django/能否通过foreignKey进行过滤?

django/能否通过foreignKey进行过滤?,django,Django,有没有办法通过foreignObject进行过滤 查看我要修复的代码 模型部件: class UserProfile: blahblah class FreeTime : owner = models.ForeignKey(UserProfile) fromTime=models.DateField() toTime=models.DateField() 现在,编码部分 givenTime = date(2012,11,11) freeTimes = F

有没有办法通过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
这完全是浪费代码

正如你们所看到的,我想要的是,找到在给定时间内空闲的用户


有没有办法减少代码?

我认为这应该是可行的:

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()

我认为这应该奏效:

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()

是的。比我快。但我要指出的是,对于他的问题,他回到了
UserProfile
class。不是
用户
。虽然你可能是对的,FK回到
用户
类是一个更好的设计,我会按照你的方式来做。真的。我总是FK到auth.models.User。我认为这是最好的做法。有了Django 1.5,我们就不会再有这个问题了。有什么区别吗?通过user.get_profile()访问用户配置文件或通过userProfile.user访问用户。通常有价值的数据在userProfile中,而不是在user中。所以我使用userprofile作为foreignKey。有什么区别?是的。比我快。但我要指出的是,对于他的问题,他回到了
UserProfile
class。不是
用户
。虽然你可能是对的,FK回到
用户
类是一个更好的设计,我会按照你的方式来做。真的。我总是FK到auth.models.User。我认为这是最好的做法。有了Django 1.5,我们就不会再有这个问题了。有什么区别吗?通过user.get_profile()访问用户配置文件或通过userProfile.user访问用户。通常有价值的数据在userProfile中,而不是在user中。所以我使用userprofile作为foreignKey。有什么区别?