Skip to content

Instantly share code, notes, and snippets.

@ranman
Last active September 7, 2017 22:51
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ranman/3d97ea9054c984bca75e to your computer and use it in GitHub Desktop.
Save ranman/3d97ea9054c984bca75e to your computer and use it in GitHub Desktop.
django rest framework question

User lookup: /api/users/randall

Speaker lookup: /api/speakers/randall

Speakers can't exist without a user but not all users are speakers.

from django.contrib.auth.models import User
class Speaker(models.Model):
user = models.OneToOneField(User)
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups')
lookup_field = 'username'
class SpeakerSerializer(serializers.HyperlinkedModelSerializer):
user = serializers.HyperlinkedRelatedField(
view_name='user-detail',
read_only=True,
lookup_field='username'
)
class Meta:
model = Speaker
lookup_field = 'user'
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
lookup_field = 'username'
class SpeakerViewSet(viewsets.ModelViewSet):
queryset = Speaker.objects.all().select_related('user')
serializer_class = SpeakerSerializer
lookup_field = "user"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment