2011-10-20 8 views
0

私はこれを通過しましたhttps://docs.djangoproject.com/en/1.1/ref/models/querysets/#values-fields しかし、私の要件は異なります。djangoモデルからリストされたフィールドを選択

私は、カスタムの飼い葉桶と店のモデルを持っている:

class VegManager(models.Manager): 
    def get_query_set(self): 
     return super(VegManager, self).get_query_set().filter(plus=True) 

class FruitsManager(models.Manager): 
    def get_query_set(self): 
     return super(FruitsManager, self).get_query_set().filter(plus=True) 


class SweetsManager(models.Manager): 
    def get_query_set(self): 
     return super(SweetsManager, self).get_query_set().filter(plus=True) 


    class Store(models.Model): 
     vegetable = models.BooleanField() 
     veg1_price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) 
     veg2_price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) 
     veg3_price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) 
     fruits = models.BoolearnField() 
     fruit1_price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) 
     fruit2_price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) 
     fruit3_price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) 
     sweets = models.BooleanField() 
     sweet1_price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) 
     sweet2_price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) 
     sweet3_price = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) 
     objects = models.Manager() 
     v = VegManager() 
     f = FruitsManager() 
     s = SweetsManager() 

    class Veg(Store): 
     class Meta: 
      proxy = True 

    class Froots(Store): 
     class Meta: 
      proxy = True 

    class Sweet(Store): 
     class Meta: 
      proxy = True 

は私がsweets.v.all()を行い、場合、それは私の野菜の価格だけを与えるという方法はありますか?お菓子やフルーツのすべての価格データを取得する代わりに?

ありがとうございます!

答えて

0

あなたは私はあなたのモデルにしても表示されていない分野であるvegetablefruitssweetsブールフィールドの代わりplus、によってあなたのマネージャーをフィルタリングすることではないでしょうか?

class VegManager(models.Manager): 
    def get_query_set(self): 
     return super(VegManager, self).get_query_set().filter(vegetables=True) 

class FruitsManager(models.Manager): 
    def get_query_set(self): 
     return super(FruitsManager, self).get_query_set().filter(fruits=True) 

class SweetsManager(models.Manager): 
    def get_query_set(self): 
     return super(SweetsManager, self).get_query_set().filter(sweets=True) 
関連する問題