如何使用“where in”子句

时间:2011-10-11 20:06:53

标签: python django

我有这些模特:

class AgencyPosition(models.Model):
   Agency=models.ForeignKey(Agency)
   Users=models.ManyToManyField(User)
   PositionTypeCode=models.ForeignKey(PositionType)
   PhoneNumber=models.CharField(max_length=50)
   Email=models.CharField(max_length=50)
   StatusTypeCode=models.ForeignKey(StatusType)

class News(models.Model):
   Category=models.ForeignKey(Category)
   Title=models.CharField(max_length=100)
   Description=models.TextField()
   created_by=models.ForeignKey(User,editable=False)
   ActionDate=models.DateTimeField(auto_now=True,editable=False)

我想当用户输入代理商的名称时,我选择前5名属于特定代理商的新闻。新闻模型有一个created_by field.created_by字段是插入那个News.in AgencyPosition我确定用户属于哪个代理商的用户。

我在views.py中执行此操作:

agn=Agency.objects.filter(Name=key)
AgencyPositionList=AgencyPosition.objects.filter(Agency=agn)

现在我拥有来自特定代理商的所有用户。然后,我想选择新闻,他们的Created_by字段用于特定的代理商。这样的伪代码:

select top 5 * from News where created_by in(AgencyPositionList.Users)

我该怎么做?

2 个答案:

答案 0 :(得分:2)

News.objects.filter(created_by__in = AgencyPositionList.Users)[:5]。这都是documented

答案 1 :(得分:1)

试试这个:

News.objects.filter(created_by__agency_position__id=your_agency_id)[:5]