Django-filter: Meta.fields์—๋Š” ์ด FilterSet์— ์ •์˜๋˜์ง€ ์•Š์€ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 11์›” 26์ผ  ยท  1๋…ผํ‰  ยท  ์ถœ์ฒ˜: carltongibson/django-filter

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,

์™œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ForeignKey๊ฐ€ ์žˆ๋Š” ๋ชจ๋ธ์— ๋Œ€ํ•œ ํ˜ธ์ถœ์—์„œ django rest ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์•„๋ž˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Error:
Meta.fields contains a field that isn't defined on this FilterSet
From:
django_filters/filterset.py
Django version 1.8.5
django-filter version 0.11.0

๋‚ด ๋ชจ๋ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

class Contract(models.Model):
    idContract = models.AutoField(db_column='idContract',primary_key=True)  
    idClient = models.ForeignKey(Client, db_column='idClient',related_name='+')
    contractmode = models.ForeignKey('Ccontractmode', db_column='ContractMode',related_name='+') 
    applicationdate = models.DateTimeField(db_column='applicationDate',null=True) 
    deliverydate = models.DateTimeField(db_column='deliveryDate', blank=True, null=True) 
    expirationdate = models.DateTimeField(db_column='expirationDate',null=True)
    mode = models.CharField(max_length=16)

    class Meta:
        managed = False
        db_table = 'Contract'
        default_permissions = ('add', 'change', 'delete', 'view')

์ด๊ฒŒ ๋ฒ„๊ทธ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์ œ๊ฐ€ ์ž˜๋ชป ์•Œ๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ธ์ง€ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์•„๋‹ด

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

class ContractViewSet(viewsets.ModelViewSet):
    permission_classes = (DjangoModelPermissions2,
                          DjangoObjectPermissions2,)
    queryset = Contract.objects.all()
    serializer_class = ContractSerializer
    filter_backends = (filters.DjangoFilterBackend,)
    filter_fields = ('applicationdate',)

filter_fields์—์„œ ํŠœํ”Œ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‰ผํ‘œ๋ฅผ ๋„ฃ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

>๋ชจ๋“  ๋Œ“๊ธ€

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

class ContractViewSet(viewsets.ModelViewSet):
    permission_classes = (DjangoModelPermissions2,
                          DjangoObjectPermissions2,)
    queryset = Contract.objects.all()
    serializer_class = ContractSerializer
    filter_backends = (filters.DjangoFilterBackend,)
    filter_fields = ('applicationdate',)

filter_fields์—์„œ ํŠœํ”Œ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‰ผํ‘œ๋ฅผ ๋„ฃ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰