Django_custom_filter для заказов и услуг
я хочу сделать модель фильтра по заказам, которая фильтрует заказы на основе услуг, предоставляемых прачечной в заказе Вот мои модели:
class Launderette(models.Model):
launderer = models.ForeignKey(Launderer, null=True, on_delete= models.SET_NULL)
name = models.CharField(max_length=200, null=True)
available_time = models.CharField(max_length=500, null=True, blank=True)
cover_photo = models.ImageField( default="0_GettyImages-1068728612.jpg")
location = models.CharField(max_length=200, null=True)
isBlocked = models.BooleanField(default=False)
date_joined =models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.name)
class Services(models.Model):
launderette = models.ForeignKey(Launderette, null=True, on_delete= models.SET_NULL)
title = models.CharField(max_length=200, null=True)
price = models.FloatField(default=0)
def __str__(self):
return str(self.title)
class StatusChoice1(models.TextChoices):
PENDING = 'pending', 'Pending'
FINISHED = 'finished', 'Finished'
ONGOING = 'ongoing', 'Ongoing'
DECLINED = 'declined', 'Declined'
Canceled = 'canceled', 'Canceled'
class Order(models.Model):
client = models.ForeignKey(Client, null=True, on_delete= models.SET_NULL)
launderette = models.ForeignKey(Launderette, null=True, on_delete= models.SET_NULL)
description = models.TextField(blank=True, null=True)
price = models.FloatField(default=0)
amount = models.FloatField(default=0)
services = models.ManyToManyField(Services)
status =models.CharField(max_length=50, blank=True, null=True, choices=StatusChoice1.choices,default=StatusChoice1.PENDING)
date_started = models.DateTimeField(null=True, blank=True)
date_created = models.DateTimeField(auto_now_add=True, null=True)
date_end = models.DateTimeField(null=True, blank=True)
def __str__(self):
return str(self.client.user.username)
Вот мой текущий фильтр:
class OrderFilter2(django_filters.FilterSet):
start_date = DateFilter(field_name="date_started", lookup_expr='gte')
end_date = DateFilter(field_name="date_end", lookup_expr='lte')
start_price = NumberFilter(field_name="price", lookup_expr='gte')
end_price = NumberFilter(field_name="price", lookup_expr='lte')
start_amount = NumberFilter(field_name="amount", lookup_expr='gte')
end_amount = NumberFilter(field_name="amount", lookup_expr='lte')
client_name = CharFilter(field_name='client__name', lookup_expr='icontains')
status = ChoiceFilter(choices=FILTER_CHOICES, )
class Meta:
model = Order
exclude = '__all__'
fields = ['start_date', 'end_date', 'start_price','start_amount','end_amount', 'client_name','status',
'services'
]
я не знаю как сделать фильтр на отображение только тех услуг, которые есть у прачки в заказе и фильтр по этим услугам