제거 중복 관련 항목 :장고 - 여기 내 응용 프로그램에서 코드 조각의
class PortolioItem(models.Model):
...
user = models.ForeignKey(User)
contract = models.ForeignKey(Contract)
quantity = models.IntegerField(...)
...
class Contract(models.Model):
...
market = models.ForeignKey(Market)
...
당신은 사용자가 자신이 소유 한 다른 계약의 수 PortfolioItems 동일한 번호를 가지고 있음을 알 수있다.
포트폴리오에 특정 "시장"의 "계약"이있는 사용자에게 전자 메일을 보내고 싶습니다. 그리고 나는 그가 소유하고있을 수있는 시장의 계약의 종류에 관계없이 사용자에게 한 번만 이메일을 보내고 싶습니다. 여기에 내가 무엇 : 사용자가 같은 시장의 계약의 다른 유형을 가질 수 있기 때문에
#get users that want to receive notices
users = User.active_users.investment_notices_users()
#get portfolio items for a specific market
market = Market.objects.get(pk=1)
portfolio_items = PortfolioItem.objects.filter(contract__in = market.contracts.all(), user__in = users)
은 검색어 세트 한 번 이상 사용자를 포함 할 수있다. 몇 가지 방법으로 중복 된 사용자를 제거 할 수 있습니다 (쉬운 해결책은 queryset -> list -> set -> list).하지만 비효율적 인/비 우아한 솔루션에 있을지 궁금해 할 수 있습니다. ORM 방법은 고유 한 사용자 쿼리 세트를 제공합니다.
미리 감사드립니다. 당신은 단지 사용자가 원하는 경우
은 관리자의 일종 investment_notices_users''인가? 그것이 어떻게 정의되는지보기에 도움이 될 수 있습니다. –
예, 상당히 기본이며 관련 부울 필드가 true로 설정된 사용자를 반환합니다. return self.filter (userprofile__receives_investment_notices = True) – shanyu