Django-filter: Meta.fields contém um campo que não está definido neste FilterSet

Criado em 26 nov. 2015  ·  1Comentário  ·  Fonte: carltongibson/django-filter

Olá,

Estou tendo algum erro que não entendo por que está acontecendo.

Recebo este erro, o erro abaixo, ao usar o framework django rest em uma chamada para um modelo que tem uma ForeignKey.

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

Meu modelo é o seguinte:

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')

Eu apreciaria muito se você pudesse me dizer se isso é um bug ou se há algo errado.
Muito obrigado.
Adão

Comentários muito úteis

Ok, sinto muito, só encontrei o problema.

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

em filter_fields eu não coloquei a vírgula para torná-la uma tupla.

>Todos os comentários

Ok, sinto muito, só encontrei o problema.

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

em filter_fields eu não coloquei a vírgula para torná-la uma tupla.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

madelyneriksen picture madelyneriksen  ·  4Comentários

sassanh picture sassanh  ·  4Comentários

xtrinch picture xtrinch  ·  4Comentários

nhuzaa picture nhuzaa  ·  3Comentários

csarcom picture csarcom  ·  3Comentários