Как получить экземпляр синглтонной модели с помощью DRF без необходимости указывать id?

У меня есть приложение django, и я использую django-solo для SingletonModel. У меня есть синглтонная модель настроек:

class GeneralSettings(SingletonModel):
    allow_signup = models.BooleanField(default=True)

Я хочу создать конечную точку API, чтобы иметь возможность получать и обновлять настройки. В настоящее время я использую DRF. Используя RetrieveModelMixin и UpdateModelMixin, я могу легко сделать это, но тогда мой маршрут должен быть таким:

.../api/settings/1 < Мне нужно добавить id.

Как я могу получить / обновить настройки, не используя id (так как это не имеет смысла для SingletonModel)?

DRF-вид:

class GeneralSettingsViewSet(
    RetrieveModelMixin,
    UpdateModelMixin,
    GenericViewSet,
):
    queryset = GeneralSettings.objects.all()
    serializer_class = GeneralSettingsSerializer
    http_method_names = ["get", "put"]

    def get_object(self) -> GeneralSettings:
        return GeneralSettings.get_solo()

Роутер:

router.register(r"settings", GeneralSettingsViewSet, "api-settings")

Вы можете использовать пользовательский маршрутизатор для решения вашей проблемы. Ниже приведен пример того, как это может выглядеть:

from rest_framework.routers import Route, SimpleRouter  
  
  
class SingletonRouter(SimpleRouter):  
    routes = [  
        Route(  
            url=r'^{prefix}{trailing_slash}$',  
            mapping={  
                'get': 'retrieve',  
                'put': 'update',  
            },  
            name='{basename}-detail',  
            detail=True,  
            initkwargs={'suffix': 'Instance'}  
        ),  
    ]  
  
  
router = SingletonRouter()  
router.register(r'settings', GeneralSettingsViewSet, 'api-settings')

Теперь это должно сработать:

GET .../settings/
PUT .../settings/
Вернуться на верх