Как я могу использовать поля 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.

Вернуться на верх