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)
ν΄λΌμ΄μΈνΈ νν°λ κΈ°λ³Έμ μΌλ‘ 무μλ©λλ€. icontainμ μ νν κ²μΌλ‘ λ°κΎΈλ©΄ μλν©λλ€.
κ·Έλ¬λ λͺ¨λ νλμμ μμ
νκΈ° μν΄ ν¬ν¨ λλ μμ΄μ½μ κ°μ Έμ¬ μ μμ΅λλ€.
μꡬ μ¬ν.txt:
μ₯κ³ ==1.10.4
μ¬μ΄μ½ν2==2.6.2
μ₯κ³ λ μ€νΈ νλ μμν¬==3.5.3
μ±λ==1.0.0
djangorestframework-jwt==1.9.0
μ₯κ³ νν°==1.0.1
asgi-redis==1.0.0
λ€νλ€==1.0.0
μλ νμΈμ @xtrinchμ λλ€.
μ€λͺ
μμ λλ λ¬Έμ λ₯Ό λ³Ό μ μμ΅λλ€. FilterSet
μ qs
μμ±μ μ€λ¨μ μ μ€μ νκ³ μ§ν μν©μ νμΈνλ κ²μ΄ μ’μ΅λλ€.
κ°λ¨ν ν μ€νΈ μΌμ΄μ€λ‘ λ²μλ₯Ό μ’ν μ μλ€λ©΄ κ·Έκ²λ λμμ΄ λ κ²μ λλ€.
Filter
λ κ°μ κ°μ Έμ€κ³ ORMμ λν μ‘°νλ₯Ό λΉλνλ―λ‘ μ§λ¬Έμ _μ΄λμ μλͺ»λκ³ μμ΅λκΉ?_μ
λλ€.
μλ
νμΈμ @xtinch - 쿼리 맀κ°λ³μκ° ν¬ν¨λ μν URLμ κ²μν μ μμ΅λκΉ? λ΄ μκ° μ λΉμ μ΄ μ§μνκ³ μλ€λ κ²μ
λλ€ /api/orders?status=foo
λμ /api/orders?status__icontains=foo
. Meta.fields
λ¬Έμμλ exact
μ‘°νμ μ½κ° λ€λ₯Έ λμμ μ€λͺ
νλ λ©λͺ¨κ° μμ΅λλ€.
@rpkilby κ°μ¬ν©λλ€. λ°°μ΄μ 첫 λ²μ§Έ νλͺ©μ΄ κΈ°λ³Έ νν°κ° λλ€λ μΈμμ λ°μμ΅λλ€. μ κ° μλͺ» μκ³ μμμ΅λλ€. :)
κ·νμ κ²μλ¬Όμ λ΄ νλ‘μ νΈμμ λμκ² λ§€μ° μ μ©ν©λλ€
κ°μ¬ ν΄μ
κ°μ₯ μ μ©ν λκΈ
μλ νμΈμ @xtinch - 쿼리 맀κ°λ³μκ° ν¬ν¨λ μν URLμ κ²μν μ μμ΅λκΉ? λ΄ μκ° μ λΉμ μ΄ μ§μνκ³ μλ€λ κ²μ λλ€
/api/orders?status=foo
λμ/api/orders?status__icontains=foo
.Meta.fields
λ¬Έμμλexact
μ‘°νμ μ½κ° λ€λ₯Έ λμμ μ€λͺ νλ λ©λͺ¨κ° μμ΅λλ€.