Skip to content

Instantly share code, notes, and snippets.

@iklobato
Created February 11, 2023 02:45
Show Gist options
  • Save iklobato/ceb1d746737a8ab2412ff7b251e01559 to your computer and use it in GitHub Desktop.
Save iklobato/ceb1d746737a8ab2412ff7b251e01559 to your computer and use it in GitHub Desktop.
creating an endpoint model using django fw
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'minimaldjango.settings')
from django.forms import DateField
from rest_framework import routers
from rest_framework.serializers import ModelSerializer
from rest_framework.viewsets import ModelViewSet
from django.db.models import (
CharField,
EmailField, Manager
)
class CustomManager(Manager):
def get(self, *args, **kwargs):
return self.filter(*args, **kwargs).first()
class EndpointModel(ModelViewSet, ModelSerializer):
authentication_classes = []
permission_classes = []
@property
def objects(self):
return CustomManager()
class Meta:
model = getattr(ModelViewSet, 'model', None)
fields = '__all__'
class Person(EndpointModel):
name = CharField(max_length=100)
birth_year = DateField()
email = EmailField()
class Company(EndpointModel):
name = CharField(max_length=100)
domain = CharField(max_length=100)
router = routers.SimpleRouter()
router.register('person', Person, basename='person')
router.register('company', Company, basename='company')
urlpatterns = router.urls
print(urlpatterns)
if __name__ == '__main__':
from django.core.management import execute_from_command_line
# execute_from_command_line(sys.argv)
execute_from_command_line(
'manage.py runserver 8000'.split()
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment