Skip to content

Instantly share code, notes, and snippets.

import os
import importlib
# by default use development
ENV_ROLE = os.getenv('ENV_ROLE', 'development')
env_settings = importlib.import_module(f'example_project.settings.{ENV_ROLE}')
globals().update(vars(env_settings))
project_name
|
|__project_name (Put all the settings for the app here.)
| |__ __init__.py
| |__settings
| |__ __init__.py
| |__ base.py
| |__ development.py
| |__ staging.py
| |__ production.py
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=50)
age = models.IntegerField()
from rest_framework import serializers
from applications.people.models import Person
class PersonDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('name', 'age')
from rest_framework import generics
from applications.people.serializers import PersonDetailSerializer
class PeopleListView(generics.ListCreateAPIView):
queryset = Person.objects.all()
serializer_class = PersonDetailSerializer
class PersonDetailSerializer(serializers.ModelSerializer):
def validate_age(self, age):
if age < 0:
raise serializers.ValidationError('Age must be a positive number.')
return age
class Meta:
...
over_18_people = Person.objects.filter(age__gte=18)
from django.db import models
from applications.people.models import Person
class Pet(models.Model):
owner = models.ForeignKey(Person, related_name='pets', on_delete=models.CASCADE)
name = models.CharField(max_length=30)
for person in Person.objects.all():
print(person.name)
print('pets info:')
for pet in person.pets.all():
print(pet.name)
print('---')
for person in Person.objects.all().prefetch_related('pets'):
print(person.name)
print('pets info:')
for pet in person.pets:
print(pet.name)
print('---')