Skip to content

Instantly share code, notes, and snippets.

@pipermerriam
Last active August 29, 2015 14:02
Show Gist options
  • Select an option

  • Save pipermerriam/f894d56d497b8f151f46 to your computer and use it in GitHub Desktop.

Select an option

Save pipermerriam/f894d56d497b8f151f46 to your computer and use it in GitHub Desktop.
class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('email', 'name', 'avatar')
        read_only_fields = ('email',)

class AdminUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('email', 'name', 'avatar', 'login_attempts')
        read_only_fields = ('email',)
class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = ('name', 'avatar')

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('email', 'login_attempts',)
        read_only_fields = ('email',)
class ToDoViewSet(viewsets.ModelViewSet):
    model = User

    def get_queryset(self):
        qs = super(ToDoViewSet, self).get_queryset()
        if self.request.DATA.get('completed'):
            return qs.filter(completed=True)
        return qs
# filters.py
class ToDoFilter(django_filters.FilterSet):
    class Meta:
        model = ToDo
        fields = ('completed',)

# views.py
class ToDoViewSet(viewsets.ModelViewSet):
    model = User
    filter_class = ToDoFilter
# filters.py
class ActiveFilter(django_filters.BooleanFilter):
    def filter(self, qs, value):
        if value:
            ...
        return qs

class ToDoFilter(django_filters.FilterSet):
    active = ActiveFilter()

    class Meta:
        model = ToDo
        fields = ('active',)

# views.py
class ToDoViewSet(viewsets.ModelViewSet):
    model = User
    filter_class = ToDoFilter
{
"count": 1234,
"prev": "...",
"results": ["..."],
"next": "..."
}
# models.py
class ToDo(models.Model):
    owner = models.ForeignKey(User)
    text = models.TextField()

# views.py
class ToDoViewSet(generics.ViewSet):
    model = ToDo
    filter_backends = (rest_framework.filters.SearchFilter,)
    search_fields = ('text',)
# settings.py
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'rest_framework.filters.SearchFilter',
    ),
}

# models.py
class ToDo(models.Model):
    owner = models.ForeignKey(User)
    text = models.TextField()

# views.py
class ToDoViewSet(generics.ViewSet):
    model = ToDo
    search_fields = ('text',)
# models.py
class ToDo(models.Model):
    owner = models.ForeignKey(User)


# views.py
class ToDoViewSet(generics.ViewSet):
    model = ToDo

    def get_queryset(self):
        qs = super(BlogEntryViewSet, self).get_queryset()
        return qs.filter(owner=self.request.user)
# models.py
class ToDo(models.Model):
    owner = models.ForeignKey(User)


# filters.py
class ToDoFilter(django_filters.FilterSet):
    class Meta:
        model = ToDo
        fields = ('owner',)


# views.py
class ToDoViewSet(generics.ViewSet):
    model = ToDo
    filter_class = ToDoFilter

    def get_queryset(self):
        qs = super(BlogEntryViewSet, self).get_queryset()
        if self.request.user.is_admin:
            return qs
        else:
            return qs.filter(owner=self.request.user)
# models.py
class ToDo(models.Model):
    created_at = models.DateTimeField()
    updated_at = models.DateTimeField()
    owner = models.ForeignKey(User)
    text = models.TextField()

# views.py
class ToDoViewSet(generics.ViewSet):
    model = ToDo
    filter_backends = (rest_framework.filters.OrderingFilter,)
    ordering_fields = ('created_at', 'updated_at')
{
"count": 1234,
"prev": null,
"results": ["..."],
"next": null
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment