class OrderFilter(django_filters.FilterSet):
class Meta:
model = Order
fields = {
'status': ['exact',],
'client': ['icontains',],
}
class OrderViewset(viewsets.ModelViewSet):
filter_class = OrderFilter
permission_classes = ( permissions.IsAuthenticated, )
serializer_class = OrderSerializer
queryset = Order.objects.all()
filter_backends = (
filters.OrderingFilter,
filters.SearchFilter,
filters.DjangoFilterBackend
)
ordering_fields = ('added_at', 'status', 'client', 'order_number')
ordering = ('-added_at',)
class Order(models.Model):
order_number = models.CharField(max_length=255, default='')
client = models.CharField(max_length=255, default='')
status = models.CharField(max_length=255, default='')
added_at = models.DateTimeField(auto_now_add=True)
рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЖрдЗрдХрдиреЛрдВ рдХреЛ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдорд┐рд▓ рдпрд╛ рдкреНрд░рддреАрдХ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ.txt:
Django == 1.10.4
psycopg2==2.6.2
djangorestframework==3.5.3
рдЪреИрдирд▓ == 1.0.0
djangorestframework-jwt==1.9.0
django-рдлрд╝рд┐рд▓реНрдЯрд░==1.0.1
рдПрдПрд╕рдЬреАрдЖрдИ-рд░реЗрдбрд┐рд╕ == 1.0.0
рдбрд╛рдлреНрдиреЗ == 1.0.0
рд╣рд╛рдп @xtrinchред
рд╡рд┐рд╡рд░рдг рд╕реЗ рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИред рдХреНрдпрд╛ рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреА FilterSet
рдХреА qs
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рд╕реЗ рднреА рдорджрдж рдорд┐рд▓реЗрдЧреАред
Filter
рдмрд╕ рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдУрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реБрдХрдЕрдк рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ _рдпрд╣ рдХрд╣рд╛рдВ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ?_
рд╣рд╛рдп @xtrinch - рдХреНрдпрд╛ рдЖрдк рдХреНрд╡реЗрд░реА /api/orders?status=foo
рдХреЗ рдмрдЬрд╛рдп /api/orders?status__icontains=foo
ред Meta.fields
рдбреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдиреЛрдЯ рд╣реИ рдЬреЛ exact
рд▓реБрдХрдЕрдк рдХреЗ рдереЛрдбрд╝реЗ рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
@rpkilby рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд рдерд╛ рдХрд┐ рд╕рд░рдгреА рдореЗрдВ рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдмрди рдЬрд╛рддрд╛ рд╣реИ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЧрд▓рдд рдерд╛ :)
рдЖрдкрдХреА рдкреЛрд╕реНрдЯ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ
рдзрдиреНрдпрд╡рд╛рдж
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рд╛рдп @xtrinch - рдХреНрдпрд╛ рдЖрдк рдХреНрд╡реЗрд░реА
/api/orders?status=foo
рдХреЗ рдмрдЬрд╛рдп/api/orders?status__icontains=foo
редMeta.fields
рдбреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдиреЛрдЯ рд╣реИ рдЬреЛexact
рд▓реБрдХрдЕрдк рдХреЗ рдереЛрдбрд╝реЗ рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред