как использовать пункт «где в» - PullRequest
1 голос
/ 12 октября 2011

У меня есть эти модели:

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 новостей, принадлежащих конкретному агентству. В модели новостей есть поле create_by field.created_by, это пользовательвставьте это News.in AgencyPosition. Я определяю, к какому агенту принадлежит пользователь.

Я делаю это в views.py:

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

, теперь у меня есть все пользователи из конкретного агентства.выберите News, что их поле Created_by предназначено для этого конкретного агентства. Например, псевдокод:

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

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

News.objects.filter(created_by__in = AgencyPositionList.Users)[:5].Это все задокументировано .

1 голос
/ 12 октября 2011

Попробуйте это:

News.objects.filter(created_by__agency_position__id=your_agency_id)[:5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...