Как я могу использовать поля url параметров Django Filter Backend для нескольких моделей, подключенных через foreignkey соединение?
У меня есть модель master и masterDetail, представленная ниже;
class Master(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='%(class)s_user')
create_date = models.DateTimeField(auto_now_add=True)
company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='%(class)s_company')
department = models.ForeignKey(Department, on_delete=models.CASCADE, related_name='%(class)s_department')
class MasterDetail(models.Model):
master = models.ForeignKey(Master, on_delete=models.CASCADE, related_name='%(class)s_master')
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='%(class)s_user')
recordtypes = models.ForeignKey(RecordTypes, on_delete=models.CASCADE, related_name='%(class)s_recordtypes')
create_date = models.DateTimeField(auto_now_add=True)
Я хочу фильтровать данные по этим двум полям модели одновременно с помощью url параметров Django Filter Backend. В url есть два параметра поля модели, такие как;
http://127.0.0.1:8003/api/master/detail/query/page/list?search=&pages=1&page_size=14&company_code=XXX&recordtypes=general
Это также мой взгляд;
class masterListAllView(generics.ListAPIView):
search_fields = ['company_company_code']
filter_backends = [DjangoFilterBackend, filters.SearchFilter]
filterset_class = MasterFilter
serializer_class = masterDetailAllSerializer
pagination_class = StandardResultsSetPagination
Я пытаюсь использовать filterset_class = MasterFilter для фильтрации, но это работает только для фильтрации мастер-модели.
Предположим, вы хотите фильтровать по типам записей (MasterDetail) и компаниям (Master).
Попробуйте это
MasterDetail.objects.filter(recordtypes__name='General', master__company__name="Test')
где "__name" - это имя поля в таблице record/company.