Djago rest API не фильтрует поля, созданные в представлении MariaDB.
Работает нормально для собственных полей базы данныхas:
Когда я выполняю фильтрацию по выбранному или cnrbillable, тогда django игнорирует мой запрос на фильтрацию.Может ли django фильтровать поля, «созданные» представлением MariaDB?
Модель Django:
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)
)
Представление Django:
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')