Django-rest-framework игнорирует поля из миксина модели

У меня есть следующая конфигурация моделей django с базовыми классами и миксином для дополнительных полей, но django-rest-framework игнорирует поля из класса миксина.

Модели

from django.db import models

class Base(models.Model):
  a = CharField()

  class Meta:
    abstract = True


class Mixin(object):
  b = CharField()


class Concrete(Base, Mixin):
  c = CharField()

  class Meta(Base.Meta):
    abstract = False

Сериализаторы

from rest_framework import serializers

class BaseSerializer(serializers.Serializer):
  class Meta:
    fields = ('a',)
    abstract = True

class ConcreteSerializer(BaseSerializer):
  class Meta(BaseSerializer.Meta):
    model = Concrete
    fields = ('b', 'c',)

Видовые наборы

from rest_framework import viewsets

class BaseViewSet(viewsets.ModelViewSet):
  # Some common @actions here.

  class Meta:
    abstract = True

class ConcreteViewSet(BaseViewSet):
  serializer_class = ConcreteSerializer

  class Meta(EquipmentItemEditProposalViewSet.Meta):
    abstract = False

УРЛЫ

from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'concrete', ConcreteViewSet, basename='concrete')

Однако, когда я перехожу по ссылке http://localhost/api/concrete/, я получаю форму django-rest-framework с полями a и c, но не поле b из миксина.

NOTE: если я сделаю класс Mixin наследуемым от django.db.models.Model вместо object, то я получу поле, но это не сработает, потому что применение миграции django приводит к проблеме наследования алмазов:

TypeError: Cannot create a consistent method resolution
order (MRO) for bases Model, Mixin

Есть ли решение этой проблемы?

Спасибо!

EDIT: то, что заставляет вещи работать, это если я явно добавляю поля в Mixin к BaseSerializer. Однако это не так DRY, как мне хотелось бы.

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