programing

MariaDB 보기에서 만든 필드에서 Django est API가 필터링되지 않습니다.

sourcejob 2023. 10. 16. 21:48
반응형

MariaDB 보기에서 만든 필드에서 Django est API가 필터링되지 않습니다.

Djago rest API는 MariaDB 뷰로 작성된 필드에서 필터링되지 않습니다.

  • 선택된
  • cnrbillable의

네이티브 DB 필드에 대해 다음과 같이 정상 작동합니다.

  • swcustomerid
  • swarparentid

제가 선택한 또는 cnrbillable을 필터링할 때 django는 제 필터링 요청을 무시하고 있습니다.MariaDB 보기에서 "만든" 필드를 장고에서 필터링할 수 있습니까?

장고 모델:

class VwMrsCustomers(models.Model):
    swcustomerid = models.IntegerField(db_column='SWCUSTOMERID', primary_key=True)  # Field name made lowercase.
    swname = models.CharField(db_column='SWNAME', max_length=70, blank=True, null=True)  # Field name made lowercase.
    swparentid = models.IntegerField(db_column='SWPARENTID', blank=True, null=True)  # Field name made lowercase.
    selected = models.IntegerField(db_column='SELECTED', blank=True, null=True)  # Field name made lowercase.
    cnrbillable = models.IntegerField(db_column='CNRBILLABLE', default=1)  # Field name made lowercase.
    us = models.SmallIntegerField(db_column='US', default=0)  # Field name made lowercase.

    class Meta:
        db_table = 'vw_mrs_customers'

MariaDB 보기:

CREATE
DEFINER = app_mrs_reporting
VIEW vw_mrs_customers
AS
(
SELECT
    mrs_customers.SWCUSTOMERID,
    mrs_customers.SWNAME,
    mrs_customers.SWPARENTID,
    mrs_customer_settings.US,
    CASE when mrs_customer_settings.SWCUSTOMERID is null then 0 else 1 end AS SELECTED,
    CASE when mrs_customer_settings.SWCUSTOMERID is not null then mrs_customer_settings.CNRBILLABLE else 0 end AS CNRBILLABLE

FROM
    mrs_customers
    LEFT JOIN
    mrs_customer_settings ON (mrs_customers.SWCUSTOMERID = mrs_customer_settings.SWCUSTOMERID)
)

장고 보기:

class CustomerSettingsList(generics.ListAPIView):
    queryset = VwMrsCustomers.objects.all()
    serializer_class = CustomerSerializerSettings
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,
                       filters.SearchFilter,
                       filters.OrderingFilter,)
    filter_class = VwMrsCustomersFilter
    filter_fields = ('swcustomerid', 'swname', 'swparentid', 'cnrbillable', 'selected')
    search_fields = ('swcustomerid', 'swname', 'swparentid', 'cnrbillable', 'selected')
    ordering_fields = ('swcustomerid', 'swname', 'swparentid', 'cnrbillable', 'selected')

언급URL : https://stackoverflow.com/questions/54366789/django-rest-api-wont-filter-on-fields-created-by-mariadb-view

반응형