コード例 #1
0
ファイル: filters.py プロジェクト: qatrackplus/qatrackplus
class FaultFilter(filters.FilterSet):

    fault_type = filters.RelatedFilter(
        FaultTypeFilter,
        field_name="fault_type",
        queryset=models.FaultType.objects.all(),
    )
    unit = filters.RelatedFilter(UnitFilter,
                                 field_name='unit',
                                 queryset=Unit.objects.all())

    modality = filters.RelatedFilter(
        ModalityFilter,
        field_name='modality',
        queryset=Modality.objects.all(),
    )

    occurred_min = MinDateFilter(field_name="occurred")
    occurred_max = MaxDateFilter(field_name="occurred")

    class Meta:
        model = models.Fault
        fields = {
            "occurred": ['exact', "in"],
            "created": ['exact', "in"],
            "modified": ['exact', "in"],
        }
コード例 #2
0
class OrdenadorFilter(filters.FilterSet):
    equipo = filters.RelatedFilter(EquipoFilter,
                                   field_name="idordenador",
                                   queryset=models.Equipo.objects.all())
    Oss = filters.RelatedFilter(OsFilter,
                                field_name="os_idos",
                                queryset=models.Os.objects.all())

    class Meta:
        model = models.Ordenador
        fields = {
            'idequipo': ['exact', 'in', 'startswith', 'contains'],
            'marca': ['exact', 'in', 'startswith', 'contains'],
            'modelo': ['exact', 'in', 'startswith', 'contains'],
            'nro_serie': ['exact', 'in', 'startswith', 'contains'],
            'nro_activo_fijo': ['exact', 'in', 'startswith', 'contains'],
            'ip': ['exact', 'in', 'startswith', 'contains'],
            'tipo': ['exact', 'in', 'startswith', 'contains'],
            'mac': ['exact', 'in', 'startswith', 'contains'],
            'hostname': ['exact', 'in', 'startswith', 'contains'],
            'procesador': ['exact', 'in', 'startswith', 'contains'],
            'ram': ['exact', 'in', 'startswith', 'contains'],
            'almacenamiento': ['exact', 'in', 'startswith', 'contains'],
            'tipo_almacenamiento': ['exact', 'in', 'startswith', 'contains'],
        }
コード例 #3
0
class RECAPDocumentFilter(FilterSet):
    docket_entry = filters.RelatedFilter(
        DocketEntryFilter,
        queryset=DocketEntry.objects.all(),
    )
    tags = filters.RelatedFilter(
        TagFilter,
        queryset=Tag.objects.all(),
    )

    class Meta:
        model = RECAPDocument
        fields = {
            "id": ["exact"],
            "date_created": DATETIME_LOOKUPS,
            "date_modified": DATETIME_LOOKUPS,
            "date_upload": DATETIME_LOOKUPS,
            "document_type": ["exact"],
            "document_number": ["exact", "gte", "gt", "lte", "lt"],
            # Parameter required in view.
            "pacer_doc_id": ["exact", "in"],
            "is_available": ["exact"],
            "sha1": ["exact"],
            "ocr_status": INTEGER_LOOKUPS,
            "is_free_on_pacer": ["exact"],
        }
コード例 #4
0
class CatalogEntryFilter(filters.FilterSet):

    op_status = filters.RelatedFilter(OperationalStatusFilter,
                                      name='operational_status',
                                      queryset=OperationalStatus.objects.all())

    orbital_status = filters.RelatedFilter(
        OrbitalStatusFilter,
        name='orbital_status',
        queryset=OrbitalStatus.objects.all())

    launch_site = filters.RelatedFilter(LaunchSiteFilter,
                                        name='launch_site',
                                        queryset=LaunchSite.objects.all())

    owner = filters.RelatedFilter(SourceFilter,
                                  name='owner',
                                  queryset=Source.objects.all())

    class Meta:
        model = CatalogEntry
        fields = {
            'international_designator': ['exact', 'in', 'startswith'],
            'norad_catalog_number': ['exact', 'in', 'startswith'],
            'names': ['exact', 'in', 'startswith'],
        }
コード例 #5
0
class PartFilter(filters.FilterSet):

    part_category = filters.RelatedFilter(
        PartCategoryFilter,
        field_name="part_category",
        queryset=models.PartCategory.objects.all(),
    )
    suppliers = filters.RelatedFilter(SupplierFilter,
                                      field_name="suppliers",
                                      queryset=models.Supplier.objects.all())
    storage = filters.RelatedFilter(StorageFilter,
                                    field_name="storage",
                                    queryset=models.Storage.objects.all())

    class Meta:
        model = models.Part
        fields = {
            "part_number": "__all__",
            "alt_part_number": "__all__",
            "name": "__all__",
            "quantity_min": "__all__",
            "quantity_current": "__all__",
            "cost": "__all__",
            "notes": "__all__",
            "is_obsolete": "__all__",
        }
コード例 #6
0
class OrganizationFilter(filters.FilterSet):
    bureau_organization = filters.RelatedFilter(
        'talentmap_api.organization.filters.OrganizationFilter',
        name='bureau_organization',
        queryset=Organization.objects.all())
    parent_organization = filters.RelatedFilter(
        'talentmap_api.organization.filters.OrganizationFilter',
        name='parent_organization',
        queryset=Organization.objects.all())
    location = filters.RelatedFilter(
        'talentmap_api.organization.filters.LocationFilter',
        name='location',
        queryset=Location.objects.all())

    # Name here must be a valid field, but it is ignored when overriden by the method parameter
    is_available = filters.BooleanFilter(
        name="bureau_positions",
        method=multi_field_filter(
            fields=["bureau_positions", "organization_positions"],
            lookup_expr="isnull",
            exclude=True))

    class Meta:
        model = Organization
        fields = {
            "code": ALL_TEXT_LOOKUPS,
            "long_description": ALL_TEXT_LOOKUPS,
            "short_description": ALL_TEXT_LOOKUPS,
            "is_bureau": ['exact'],
            "is_regional": ['exact'],
            "bureau_organization": FOREIGN_KEY_LOOKUPS,
            "parent_organization": FOREIGN_KEY_LOOKUPS,
            "location": FOREIGN_KEY_LOOKUPS
        }
コード例 #7
0
class DelayedReportFilter(filters.FilterSet):
    build = filters.RelatedFilter(BuildFilter,
                                  name="build",
                                  queryset=Build.objects.all(),
                                  widget=forms.TextInput)
    baseline = filters.RelatedFilter(BuildFilter,
                                     name="baseline",
                                     queryset=Build.objects.all(),
                                     widget=forms.TextInput)

    class Meta:
        model = DelayedReport
        fields = {
            "output_format":
            ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "template": ['exact', 'in'],
            "email_recipient":
            ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "email_recipient_notified": ['exact'],
            "callback": ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "callback_notified": ['exact'],
            "data_retention_days": ['exact', 'in'],
            "output_text":
            ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "output_html":
            ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "error_message":
            ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "status_code": ['exact', 'in'],
            "created_at": ['exact', 'gt', 'lt'],
        }
コード例 #8
0
ファイル: filters.py プロジェクト: aakarshgoel96/kiranalogy
class StoreFilterSet(drf_filters.FilterSet):
    vendor = drf_filters.RelatedFilter(VendorFilterSet)
    purchasebill = drf_filters.RelatedFilter(PurchaseBillFilterSet)
    sellbill = drf_filters.RelatedFilter(SellBillFilterSet)

    class Meta:
        model = Store
コード例 #9
0
class OpinionClusterFilter(FilterSet):
    docket = filters.RelatedFilter(DocketFilter, queryset=Docket.objects.all())
    panel = filters.RelatedFilter(
        "cl.people_db.filters.PersonFilter", queryset=Person.objects.all()
    )
    non_participating_judges = filters.RelatedFilter(
        "cl.people_db.filters.PersonFilter", queryset=Person.objects.all()
    )
    sub_opinions = filters.RelatedFilter(
        OpinionFilter, queryset=Opinion.objects.all()
    )
    source = filters.MultipleChoiceFilter(choices=SOURCES)
    citations = filters.RelatedFilter(
        CitationFilter, queryset=Citation.objects.all()
    )

    class Meta:
        model = OpinionCluster
        fields = {
            "id": ["exact"],
            "date_created": DATETIME_LOOKUPS,
            "date_modified": DATETIME_LOOKUPS,
            "date_filed": DATE_LOOKUPS,
            "scdb_id": ["exact"],
            "scdb_decision_direction": ["exact"],
            "scdb_votes_majority": INTEGER_LOOKUPS,
            "scdb_votes_minority": INTEGER_LOOKUPS,
            "citation_count": INTEGER_LOOKUPS,
            "precedential_status": ["exact"],
            "date_blocked": DATE_LOOKUPS,
            "blocked": ["exact"],
        }
コード例 #10
0
class TestListCycleFilter(filters.FilterSet):

    created_by = filters.RelatedFilter(UserFilter,
                                       field_name="created_by",
                                       queryset=User.objects.all())
    modified_by = filters.RelatedFilter(UserFilter,
                                        field_name="modified_by",
                                        queryset=User.objects.all())
    test_lists = filters.RelatedFilter(TestListFilter,
                                       field_name="test_lists",
                                       queryset=models.TestList.objects.all())
    utcs = filters.RelatedFilter(
        "qatrack.api.qa.filters.UnitTestCollectionFilter",
        field_name="utcs",
        queryset=models.UnitTestCollection.objects.all(),
    )

    created_min = MinDateFilter(field_name="created")
    created_max = MaxDateFilter(field_name="created")
    modified_min = MinDateFilter(field_name="modified")
    modified_max = MaxDateFilter(field_name="modified")

    class Meta:
        model = models.TestListCycle
        fields = {
            "name": ['exact', 'icontains', 'contains', 'in'],
            "slug": ['exact', 'icontains', 'contains', 'in'],
            "description": ['icontains'],
            "drop_down_label": ['icontains', 'in'],
            "day_option_text": ['icontains', 'in'],
            "created": ['exact'],
            "modified": ['exact'],
        }
コード例 #11
0
class ReferenceFilter(filters.FilterSet):

    created_by = filters.RelatedFilter(UserFilter,
                                       field_name="created_by",
                                       queryset=User.objects.all())
    modified_by = filters.RelatedFilter(UserFilter,
                                        field_name="modified_by",
                                        queryset=User.objects.all())

    type = filters.Filter(
        field_name="type",
        widget=widgets.Select(choices=[('', 'Any')] +
                              list(models.REF_TYPE_CHOICES)),
    )

    created_min = MinDateFilter(field_name="created")
    created_max = MaxDateFilter(field_name="created")
    modified_min = MinDateFilter(field_name="modified")
    modified_max = MaxDateFilter(field_name="modified")

    class Meta:
        model = models.Reference
        fields = {
            "name": ['exact', 'icontains', 'contains', 'in'],
            "value": ['exact', 'in', 'gte', 'lte'],
            "created": ['exact'],
            "modified": ['exact'],
        }
コード例 #12
0
ファイル: filters.py プロジェクト: Andr3iC/courtlistener
class PositionFilter(filters.FilterSet):
    court = filters.RelatedFilter(CourtFilter, name='court')
    retention_events = filters.RelatedFilter(RetentionEventFilter,
                                             name='retention_events')
    appointer = filters.RelatedFilter('cl.people_db.filters.PersonFilter',
                                      name='appointer')

    class Meta:
        model = Position
        fields = {
            'id': ['exact'],
            'position_type': ['exact'],
            'person': ['exact'],
            'predecessor': ['exact'],
            'job_title': ALL_TEXT_LOOKUPS,
            'date_created': DATETIME_LOOKUPS,
            'date_modified': DATETIME_LOOKUPS,
            'date_nominated': DATE_LOOKUPS,
            'date_elected': DATE_LOOKUPS,
            'date_recess_appointment': DATE_LOOKUPS,
            'date_referred_to_judicial_committee': DATE_LOOKUPS,
            'date_judicial_committee_action': DATE_LOOKUPS,
            'date_hearing': DATE_LOOKUPS,
            'date_confirmation': DATE_LOOKUPS,
            'date_start': DATE_LOOKUPS,
            'date_retirement': DATE_LOOKUPS,
            'date_termination': DATE_LOOKUPS,
            'judicial_committee_action': ['exact'],
            'nomination_process': ['exact'],
            'voice_vote': ['exact'],
            'votes_yes': INTEGER_LOOKUPS,
            'votes_no': INTEGER_LOOKUPS,
            'how_selected': ['exact'],
            'termination_reason': ['exact'],
        }
コード例 #13
0
class ContractFilterSet(filters.FilterSet):
    customer = filters.RelatedFilter(CustomerFilterSet,
                                     queryset=Customer.objects.all())

    serviceinfo = filters.RelatedFilter(ServiceInfoFilterSet,
                                        queryset=ServiceInfo.objects.all())

    last_counselor__username__in = CharCSVFilter(
        method="filter_last_counselor_usernames")

    class Meta:
        model = Contract
        fields = {
            "id": (
                "exact",
                "in",
            ),  # fore delete...
            "contract_num": ("exact", "in", "icontains"),
            "signing_date": ("gte", "lte", "range"),
            "probation_until": ("gte", "lte", "range"),
        }

    def filter_last_counselor_usernames(self, qs, field_name, value):
        qs = qs.annotate(
            max_transfer_date=Max("takeover__transfer_date")).filter(
                takeover__transfer_date=F("max_transfer_date"),
                takeover__counselor__username__in=value,
            )
        return qs
コード例 #14
0
ファイル: filters.py プロジェクト: swipswaps/courtlistener
class OpinionFilter(FilterSet):
    # Cannot to reference to opinions_cited here, due to it being a self join,
    # which is not supported (possibly for good reasons?)
    cluster = filters.RelatedFilter('cl.search.filters.OpinionClusterFilter',
                                    queryset=OpinionCluster.objects.all())
    author = filters.RelatedFilter(
        'cl.people_db.filters.PersonFilter',
        queryset=Person.objects.all(),
    )
    joined_by = filters.RelatedFilter(
        'cl.people_db.filters.PersonFilter',
        queryset=Person.objects.all(),
    )
    type = filters.MultipleChoiceFilter(choices=Opinion.OPINION_TYPES)

    class Meta:
        model = Opinion
        fields = {
            'id': INTEGER_LOOKUPS,
            'date_modified': DATETIME_LOOKUPS,
            'date_created': DATETIME_LOOKUPS,
            'sha1': ['exact'],
            'extracted_by_ocr': ['exact'],
            'per_curiam': ['exact'],
        }
コード例 #15
0
ファイル: filters.py プロジェクト: swipswaps/courtlistener
class RECAPDocumentFilter(FilterSet):
    docket_entry = filters.RelatedFilter(
        DocketEntryFilter,
        queryset=DocketEntry.objects.all(),
    )
    tags = filters.RelatedFilter(
        TagFilter,
        queryset=Tag.objects.all(),
    )

    class Meta:
        model = RECAPDocument
        fields = {
            'id': ['exact'],
            'date_created': DATETIME_LOOKUPS,
            'date_modified': DATETIME_LOOKUPS,
            'date_upload': DATETIME_LOOKUPS,
            'document_type': ['exact'],
            'document_number': ['exact', 'gte', 'gt', 'lte', 'lt'],
            'pacer_doc_id': ['exact', 'in'],
            'is_available': ['exact'],
            'sha1': ['exact'],
            'ocr_status': INTEGER_LOOKUPS,
            'is_free_on_pacer': ['exact'],
        }
コード例 #16
0
ファイル: filters.py プロジェクト: qatrackplus/qatrackplus
class ReturnToServiceQAFilter(filters.FilterSet):

    unit_test_collection = filters.RelatedFilter(
        UnitTestCollectionFilter,
        field_name='unit_test_collection',
        queryset=UnitTestCollection.objects.all())
    test_list_instance = filters.RelatedFilter(
        TestListInstanceFilter,
        field_name='test_list_instance',
        queryset=TestListInstance.objects.all())
    user_assigned_by = filters.RelatedFilter(UserFilter,
                                             field_name='user_assigned_by',
                                             queryset=User.objects.all())
    service_event = filters.RelatedFilter(
        ServiceEventFilter,
        field_name='service_event',
        queryset=models.ServiceEvent.objects.all())

    datetime_assigned_min = MinDateFilter(field_name="datetime_assigned")
    datetime_assigned_max = MaxDateFilter(field_name="datetime_assigned")

    class Meta:
        model = models.ReturnToServiceQA
        fields = {
            'datetime_assigned': ['exact'],
        }
コード例 #17
0
class TestJobFilter(filters.FilterSet):
    testrun = filters.RelatedFilter(TestRunFilter,
                                    name="testrun",
                                    queryset=TestRun.objects.all(),
                                    widget=forms.TextInput)
    target_build = filters.RelatedFilter(BuildFilter,
                                         name="target_build",
                                         queryset=Build.objects.all(),
                                         widget=forms.TextInput)
    target = filters.RelatedFilter(ProjectFilter,
                                   name="target",
                                   queryset=Project.objects.all(),
                                   widget=forms.TextInput)

    class Meta:
        model = TestJob
        fields = {
            'name': ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "environment":
            ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "submitted": ['exact', 'in'],
            "fetched": ['exact', 'in'],
            "fetch_attempts": ['exact', 'in'],
            "last_fetch_attempt": ['exact', 'in', 'lt', 'gt', 'lte', 'gte'],
            "failure": ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "can_resubmit": ['exact', 'in'],
            "resubmitted_count": ['exact', 'in'],
            "job_status":
            ['exact', 'in', 'startswith', 'contains', 'icontains'],
            "job_id": ['exact', 'in', 'startswith', 'contains', 'icontains']
        }
コード例 #18
0
class WaiverFilter(filters.FilterSet):
    bid = filters.RelatedFilter(BidFilter,
                                name='bid',
                                queryset=Bid.objects.all())
    position = filters.RelatedFilter(
        'talentmap_api.position.filters.PositionFilter',
        name='position',
        queryset=Position.objects.all())
    user = filters.RelatedFilter(
        'talentmap_api.user_profile.filters.UserProfileFilter',
        name='user',
        queryset=UserProfile.objects.all())

    class Meta:
        model = Waiver
        fields = {
            "user": FOREIGN_KEY_LOOKUPS,
            "position": FOREIGN_KEY_LOOKUPS,
            "bid": FOREIGN_KEY_LOOKUPS,
            "status": ALL_TEXT_LOOKUPS,
            "category": ALL_TEXT_LOOKUPS,
            "type": ALL_TEXT_LOOKUPS,
            "description": ALL_TEXT_LOOKUPS,
            "create_date": DATE_LOOKUPS,
            "update_date": DATE_LOOKUPS
        }
コード例 #19
0
class BuildFilter(filters.FilterSet):
    project = filters.RelatedFilter(ProjectFilter, name="project", queryset=Project.objects.all(), widget=forms.TextInput)
    status = filters.RelatedFilter(ProjectStatusFilter, name="status", queryset=ProjectStatus.objects.all(), widget=forms.TextInput)

    class Meta:
        model = Build
        fields = {'version': ['exact', 'in', 'startswith'],
                  'id': ['exact']}
コード例 #20
0
class OpinionsCitedFilter(FilterSet):
    citing_opinion = filters.RelatedFilter(OpinionFilter)
    cited_opinion = filters.RelatedFilter(OpinionFilter)

    class Meta:
        model = OpinionsCited
        fields = {
            'id': ['exact'],
        }
コード例 #21
0
class DatasetRelationshipFilter(rest_framework_filters.FilterSet):
    """Filter for DatasetRelationships"""
    child = rest_framework_filters.RelatedFilter(
        DatasetFilter,
        field_name='child',
        queryset=geospaas.catalog.models.Dataset.objects.all())
    parent = rest_framework_filters.RelatedFilter(
        DatasetFilter,
        field_name='parent',
        queryset=geospaas.catalog.models.Dataset.objects.all())
コード例 #22
0
class TrackPlayFilter(filters.FilterSet):
    label = filters.RelatedFilter('LabelFilter', field_name='label', queryset=Label.objects.all())
    track = filters.RelatedFilter('TrackFilter', field_name='track', queryset=Track.objects.all())
    setlist = filters.RelatedFilter('SetlistFilter', field_name='setlist', queryset=Setlist.objects.all())

    class Meta:
        model = TrackPlay
        fields = {
            'set_order': ['exact', 'in']
        }
コード例 #23
0
class SourceFilter(rest_framework_filters.FilterSet):
    """Filter for Sources"""
    instrument = rest_framework_filters.RelatedFilter(
        InstrumentFilter,
        field_name='instrument',
        queryset=geospaas.vocabularies.models.Instrument.objects.all())
    platform = rest_framework_filters.RelatedFilter(
        PlatformFilter,
        field_name='platform',
        queryset=geospaas.vocabularies.models.Platform.objects.all())
コード例 #24
0
class TestRunFilter(filters.FilterSet):
    build = filters.RelatedFilter(BuildFilter, name="build", queryset=Build.objects.all(), widget=forms.TextInput)
    environment = filters.RelatedFilter(EnvironmentFilter, name="environment", queryset=Environment.objects.all(), widget=forms.TextInput)

    class Meta:
        model = TestRun
        fields = {'job_id': ['exact', 'in', 'startswith'],
                  'job_status': ['exact', 'in', 'startswith'],
                  'data_processed': ['exact', 'in'],
                  'status_recorded': ['exact', 'in']}
コード例 #25
0
class TestFilter(filters.FilterSet):
    test_run = filters.RelatedFilter(TestRunFilter, field_name="test_run", queryset=TestRun.objects.all(), widget=forms.TextInput)
    suite = filters.RelatedFilter(SuiteFilter, field_name="suite", queryset=Suite.objects.all(), widget=forms.TextInput)
    known_issues = filters.RelatedFilter(KnownIssueFilter, field_name='known_issues', queryset=KnownIssue.objects.all(), widget=forms.TextInput)

    class Meta:
        model = Test
        fields = {'name': ['exact', 'in', 'startswith', 'contains', 'icontains'],
                  'result': ['exact', 'in'],
                  'has_known_issues': ['exact', 'in']}
コード例 #26
0
class TrackFilter(filters.FilterSet):
    title = CharFilter(field_name='title', lookup_expr='iexact')
    artist = filters.RelatedFilter('ArtistFilter', field_name='artist', queryset=Artist.objects.all())
    setlists = filters.RelatedFilter('SetlistFilter', field_name='setlists', queryset=Setlist.objects.all())
    plays = filters.RelatedFilter('TrackPlayFilter', field_name='plays', queryset=TrackPlay.objects.all())

    class Meta:
        model = Track
        fields = {
            'title': ['iexact', 'in', 'startswith', 'icontains'],
        }
コード例 #27
0
class PlanRepositoryRelatedFilter(filters.FilterSet):
    plan = filters.RelatedFilter(PlanRelatedFilter,
                                 name="plan",
                                 queryset=Plan.objects.all())
    repo = filters.RelatedFilter(RepositoryRelatedFilter,
                                 name="repo",
                                 queryset=Repository.objects.all())

    class Meta:
        model = PlanRepository
        fields = ["id"]
コード例 #28
0
ファイル: views.py プロジェクト: olliswe/osusu-backend
class ClaimFilter(rf_filters.FilterSet):
    tricycle = rf_filters.RelatedFilter(ClaimTricycleFilter,
                                        field_name="tricycle",
                                        queryset=Tricycle.objects.all())
    garage = rf_filters.RelatedFilter(ClaimGarageFilter,
                                      field_name="garage",
                                      queryset=Garage.objects.all())

    class Meta:
        model = Claim
        fields = ("status", )
コード例 #29
0
class MetricFilter(filters.FilterSet):
    test_run = filters.RelatedFilter(TestRunFilter, field_name="test_run", queryset=TestRun.objects.all(), widget=forms.TextInput)
    suite = filters.RelatedFilter(SuiteFilter, field_name="suite", queryset=Suite.objects.all(), widget=forms.TextInput)

    class Meta:
        model = Metric
        fields = {'name': ['exact', 'in', 'startswith', 'contains', 'icontains'],
                  'result': ['exact', 'in'],
                  'test_run': ['exact', 'in'],
                  'is_outlier': ['exact', 'in'],
                  'suite': ['exact', 'in']}
コード例 #30
0
class OpinionsCitedFilter(FilterSet):
    citing_opinion = filters.RelatedFilter(
        OpinionFilter, queryset=Opinion.objects.all()
    )
    cited_opinion = filters.RelatedFilter(
        OpinionFilter, queryset=Opinion.objects.all()
    )

    class Meta:
        model = OpinionsCited
        fields = {
            "id": ["exact"],
        }