ich eine einfache Abfrage auf Djangos in den Kommentaren Modell gebaut habe und immer die Fehler unten mit Heroku des PostgreSQL-Datenbank:heroku, postgreSQL, django, Kommentare, tastypie: Kein Operator entspricht dem angegebenen Namen und Argumenttyp (en). Möglicherweise müssen expliziten Typen hinzufügen wirft
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.
Nach googeln um es dieser Fehler oft angesprochen scheint wurde vorher im Django, aber ich bekomme es immer noch (alle damit verbundenen Probleme wurden vor 3-5 Jahren geschlossen). Ich benutze Django Version 1.4 und die neueste Version von Tastypie.
Die Abfrage wird unter orm Filter gemacht und arbeitet perfekt mit meiner Entwicklung Datenbank (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)
Jeder mit keiner Erfahrung haben, ohne das Schreiben rohes SQL, um diesen Fehler zu bekommen?
Wie der Fehler sagt, versuchen Sie eine Ganzzahl mit einem Textwert zu vergleichen. Hör auf damit und der Fehler wird verschwinden. –
Übrigens ist dies ein gutes Beispiel dafür, warum Tests mit einer Umgebung durchgeführt werden sollten, die so ähnlich wie möglich ist: Wie sehr auch immer ein Framework abstrahiert, etwas, das so komplex ist wie ein DBMS, muss ein anderes Verhalten und Einschränkungen haben . – IMSoP
IMSoP, ja, ich habe diese Lektion heute gelernt! Habe gerade meine Entwicklungsdatenbank auf PostgreSQL umgestellt, um an diesem Problem zu arbeiten. – arctelix