2015-10-14 31 views
0

在Django的模型我需要一些條件來篩選ManyToManyField 如何使用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僅示出了通過

狀態標記汽車= 'ACTIVE'

任何想法來處理,或一些示例代碼,請

感謝您的幫助

+0

你想要的管理界面上? – danielfranca

+0

是的,我想要在管理界面上。 –

回答

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) 
+0

簡單而且非常有用!謝謝丹尼爾 –

2

假設你希望獲得與主動汽車所有展示廳:

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

的更多信息:Django documentation: Making queries

+0

在視圖中使用的正確答案,但我需要在cms中的選擇列表中顯示的模型中進行過濾。 –

+0

哪cms?你應該在你的問題中包含所有細節。 – Wtower