2012-03-18 4 views
2

私はdjanoモデルがあります:私がする必要がどのようなDjangoでrelated_setが最も小さいオブジェクトを見つけるには?

class Expiration(models.Model): 
    UNIT_CHOICES = (
     ('M', 'Month'), 
     ('W', 'Week') 
    ) 
    unit = models.CharField(max_length = 1, choices= UNIT_CHOICES) 
    number_of_units = models.IntegerField(default=1) 
    offset = models.IntegerField(default=1) 

class Profile(models.Model): 
    name   = models.CharField(default="tmp", max_length=32, blank=True) 
    expiration_period = models.ForeignKey(Expiration, blank=True, null=True) 

は、それに関連付けられたプロファイルの最小数を持っており、重複した場合には、そのうちの一つを返す期限のインスタンスを取得することです。またはより良いexpは、有効期限のインスタンスであるならば、私は最も小さいexp.profile_set.count()

expを探していますと言う誰もが任意のアイデアを持って?

答えて

6

Annotate各有効期限のプロファイル数を設定します。その後、注釈付きフィールドで注文します。プロファイルの数が最も少ない(または最も少ない)プロファイルは、クエリセットの最初の結果です。

すべて一緒にそれを置く、あなたが持っている:

from django.db.models import Count 

Expiration.objects.annotate(num_profiles=Count('profile')).order_by('num_profiles')[0] 
+0

完璧な答えを。ありがとう – Nasir

関連する問題