如何使用条件为

时间:2015-10-14 10:19:21

标签: django python-2.7 django-models

在django模型中,我需要过滤ManyToManyField 有一些条件

STATUS_CHOICES=(
('ACTIVE', 'Active'),
('INACTIVE', 'Inactive'),)


class Car(models.Model):
    name = models.CharField()
    status = models.CharField(choices=STATUS_CHOICES,
                              default='ACTIVE')

class Showroom(models.Model):
    name = models.CharField()
    stock_car = models.ManyToManyField('Car')

此代码可用于获取所有汽车的列表,但我需要一些条件

我需要ManyToManyField只显示标有

的汽车
  

status =' ACTIVE'

请任意处理它或一些示例代码

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

假设您希望获得所有带有活动车辆的展示厅:

Showroom.objects.filter(stock_car__status='ACTIVE')

更多信息:Django documentation: Making queries

答案 1 :(得分:0)

在ModelAdmin中,您可以使用formfield_for_manytomany过滤数据 您可以在docs

中查看更多详细信息

即:

class ShowroomAdmin(admin.ModelAdmin):
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == "stock_car":
            kwargs["queryset"] = Car.objects.filter(status='ACTIVE')
        return super(ShowroomAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)