Django-filter: Meta.fields contient un champ qui n'est pas défini sur ce FilterSet

Créé le 26 nov. 2015  ·  1Commentaire  ·  Source: carltongibson/django-filter

Bonjour,

J'ai une erreur dont je ne comprends pas pourquoi cela se produit.

Je reçois cette erreur l'erreur ci-dessous lors de l'utilisation du cadre de repos django dans un appel à un modèle qui a une clé étrangère.

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

Mon modèle est le suivant :

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

J'apprécierais beaucoup si vous pouviez me dire s'il s'agit d'un bug ou si j'ai quelque chose qui ne va pas.
Merci beaucoup.
Adam

Commentaire le plus utile

Ok, je suis vraiment désolé, je viens de trouver le problème.

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

dans filter_fields, je n'ai pas mis la virgule pour en faire un tuple.

>Tous les commentaires

Ok, je suis vraiment désolé, je viens de trouver le problème.

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

dans filter_fields, je n'ai pas mis la virgule pour en faire un tuple.

Cette page vous a été utile?
0 / 5 - 0 notes