heroku, postgreSQL, django, commentaires, tastypie: Aucun opérateur correspond au nom donné et le type d'argument(s). Vous pourriez avoir besoin d'ajouter de type explicite jette

J'ai une requête simple sur de django reinhardt, construit dans les commentaires de modèle et d'obtenir l'erreur ci-dessous avec heroku est une base de données postgreSQL:

DatabaseError: operator does not exist: integer = text LINE 1: 
... INNER JOIN "django_comments" ON ("pi ns_pin"."id" = "django_...
                                                         ^
HINT:  No operator matches the given name and argument type(s). 
You might need to add explicit type casts.

Après googler autour il semble que cette erreur a été abordée de nombreuses fois dans django, mais je suis encore en train (toutes les questions connexes ont été fermés 3-5 ans) . Je suis à l'aide de django version 1.4 et la dernière version de tastypie.

La requête est faite en vertu de l'orm filtres et fonctionne parfaitement avec ma base de données de développement (sqlite3):

class MyResource(ModelResource):    

    comments = fields.ToManyField('my.api.api.CmntResource', 'comments', full=True, null=True)

    def build_filters(self, filters=None):
        if filters is None:
            filters = {}

        orm_filters = super(MyResource, self).build_filters(filters)

        if 'cmnts' in filters:
            orm_filters['comments__user__id__exact'] = filters['cmnts']

class CmntResource(ModelResource):
    user = fields.ToOneField('my.api.api.UserResource', 'user', full=True)
    site_id = fields.CharField(attribute = 'site_id')
    content_object = GenericForeignKeyField({
        My: MyResource,
    }, 'content_object')
    username = fields.CharField(attribute = 'user__username', null=True)
    user_id = fields.CharField(attribute = 'user__id', null=True)

Quelqu'un a une expérience avec l'erreur sans avoir à écrire de SQL brut?

Comme le message d'erreur indique que vous êtes en train de comparer un nombre entier d'une valeur de texte. Arrêter de le faire et l'erreur s'en aller.
D'ailleurs, c'est un bon exemple de pourquoi les essais doivent être effectués avec un environnement aussi proche que possible de l'endroit où vous déployez: cependant beaucoup de un cadre de revendications à l'abstrait sur elle, quelque chose d'aussi complexe qu'un SGBD est lié à avoir des comportements différents et des limites.
IMSoP, oui en effet j'ai appris cette leçon d'aujourd'hui! Viens de changer mon développement DB par rapport à PostgreSQL de travailler sur cette question.
Wow, plus de 2900 points de vue et non pas un vote... je suppose que 2900 personnes ont trouvé cette question inutile.
5243 et de comptage....

OriginalL'auteur arctelix | 2013-04-16