Vous n'êtes pas identifié(e).
Bonjour à tous,
je me retrouve dans une situation ennuyeuse et j'aurais besoin de vos lumières. Je développe un logiciel libre orienté messagerie (http://modoboa.org) et parmi les plugins que je propose, il y un frontend pour Amavis (http://www.amavis.org). Ce dernier est un content filter et utilise une base de données pour stocker différentes choses. En fonction du SGBD utilisé (mysql ou postgresql), le schéma de base utilise des types différents, notamment pour les types binaires.
Mon problème concerne le type *bytea* de postgres. Je n'avais jamais eu l'occasion de tester mon frontend avec postgres et je découvre avec horreur qu'il ne fonctionne pas. Lors de l'introspection initiale réalisée par django, les types binaires ont été traduits en CharField, cela fonctionne avec mysql mais pas avec postgres. Le type d'erreur que je rencontre est le suivant :
Caught DatabaseError while rendering: operator does not exist: bytea ~ unknown
LINE 1: ... WHERE ("msgrcpt"."rs" = 'p' AND "maddr"."email" ~ '(jojo-w...
Après recherche, j'ai vu que django ne supportait pas ce type mais qu'il était prévu d'implémenter un type binaire portable... un jour.
Est ce que quelqu'un aurait déjà rencontré ce type problème? Savez vous pour quelle version de django ce dév. serait prévu?
Merci d'avance pour votre aide
Hors ligne
Salut,
Tu n'a pas beaucoup de succès avec ta question.. Alors de ce que j'ai cherché,
l'implémentation du modelfield dans Django c'est pas pour tout de suite, la
feature a du mal à avancer.
Bref la seule solution qui semble viable pour toi ça semble être
http://django-orm.readthedocs.org/en/latest/orm-pg-bytea-field.html
Par contre c'est juste pour stocker, à priori ce n'est pas possible de
l'utiliser dans les requêtes de séléction.
My 2 cents.
Hors ligne
Salut,
merci pour ta réponse. J'avais effectivement découvert l'existence de ce module mais comme tu le précises, impossible de faire des requêtes de lecture avec... ce qui est justement ce dont j'ai besoin
J'ai un peu avancé sur le sujet mais la correction est délicate et *sale* : postgres propose une fonction *convert_from* (http://www.postgresql.org/docs/9.1/stat … tring.html) qui permet de transformer le contenu d'un bytea vers une chaine de caractères. Cela combiné avec un test pour connaitre le sgbd utilisé, il devient possible de s'en sortir... provisoirement
Bref, je vais implémenter cette solution dans un 1er temps (afin de débloquer la situation) et réfléchir à qq chose de plus stable pour le futur. D'ici là, peut-être que ce fameux modelfield aura vu le jour...
Hors ligne