【问题标题】:Selecting listed fields from the django model从 django 模型中选择列出的字段
【发布时间】:2011-10-20 11:03:19
【问题描述】:

我经历过这个https://docs.djangoproject.com/en/1.1/ref/models/querysets/#values-fields 但我的要求不同。

我有一个带有自定义经理的商店模型:

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() 并且它只给我蔬菜的价格,有什么办法吗?而不是同时获取糖果和水果的所有价格数据?

谢谢!

【问题讨论】:

    标签: django django-models


    【解决方案1】:
    【解决方案2】:

    您不应该使用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)
    

    【讨论】:

      猜你喜欢
      • 2011-01-19
      • 2021-09-18
      • 2021-07-18
      • 2011-08-25
      • 1970-01-01
      • 2016-03-10
      • 2014-08-17
      • 2017-04-19
      • 1970-01-01
      相关资源
      最近更新 更多