在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'
请任意处理它或一些示例代码
感谢您的帮助
答案 0 :(得分:2)
假设您希望获得所有带有活动车辆的展示厅:
Showroom.objects.filter(stock_car__status='ACTIVE')
答案 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)