Created
February 11, 2023 02:45
-
-
Save iklobato/ceb1d746737a8ab2412ff7b251e01559 to your computer and use it in GitHub Desktop.
creating an endpoint model using django fw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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