IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Odoo (ex-OpenERP) Discussion :

Champ de type related: je recoit une erreur TypeError: string indices must be integers


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Membre à l'essai
    Homme Profil pro
    Retraiter
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraiter

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Champ de type related: je recoit une erreur TypeError: string indices must be integers
    I have managed to get the manufacturer product code into purchase order line, now, I would like to add the manufacturer name which is a many2one field. I have tried :
    J'ai réussi a ajouter le champ "Manufacturer product code" dans la table "purchase_order_line", maintenant, j'aimerai ajouter le nom du manufacturier qui lui, vient de la table "res_partner", c'est un champ "many2one". J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     'manufacturer' : fields.related('manufacturer_pref','manufacturer',type="many2one", relation="res.partner", string="Manufacturer",store=True),
    mais je recois une erreur: TypeError: string indices must be integers.

    Quelqu'un peut m'aider a trouver mon erreur ?

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Mais pourquoi ne pas mettre alors un champ many2one ?

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    'partner_id': fields.many2one('res.partner', 'Manufacturier'),

  3. #3
    Membre à l'essai
    Homme Profil pro
    Retraiter
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraiter

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    J'ai essayer cette solution, au lieu de partner_id qui est utiliser pour autre chose dans cette objet, je l'ai nommer manufacturer_id mais encore la, je ne recoit rien.

    Selon moi c'est a cause de la relation complexe. J'explique:

    Je suis dans la table purchase_order_line.
    Chaque ligne est un produit qui vient de la table product_product.

    elle sont relier par product_id (table purchase_order_line) et id ( table product_product).

    Dans la table product_product, pour chaque ligne de produit, j'ai le champ manufacturer_pref et manufacturer.

    Je reussi a acceder au champ manufacturer_pref avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'manufacturer_pref': fields.related('product_id', 'manufacturer_pref', type="char", relation="product.product", string="Manufacturer Code", store=True),
    sans probleme mais c'est autre chose pour manufacturer.

    manufacturer est un champ de type many2one qui contient le id du partenaire dans la table res.partner.

    Moi, je veux avoir le champ name de la table res.partner lier a cet id contenu dans la table product.product selon mon product_id dans purchase_order_line.

    Est-ce plus clair ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut
    Je te conseille d'étudier le champ name de projet_project qui est justement un champ fields.related associé au module de comptabilité analytique.

    Tu verras ainsi si c'est vraiment ce qu'il te faut faire ou si c'est mieux de faire un many2one
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Retraiter
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraiter

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    je n'ai trouver pas trouver de champ name dans project.py sous project.project, il n'y en a pas non plus dans la db (via pgadmin3)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Retraiter
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraiter

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Toujours a la recherche d'une solution...

    Champ finale rechercher: Nom du manufacturier du produit dans la table purchase_order_line.

    Cheminement:

    dans la table purchase_order_line il y a le champ product_id. Ce champ est relier a la cle primaire de la table product_product.

    Dans la table product_product, il y a un champ manufacturer qui lui, contient un int qui, est la cle primaire de la table res.partner.

    Dans la table res.partner, il y a le champ name qui est ce que je veux afficher.

    Je ne veut pas que l'usager entre ce champ, je veux que, lorsque le numero de produit est entrer, automatiquement, le champ manufacturer est remplis comme le fait mon champ manufacturer_pref grace a la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'manufacturer_pref': fields.related('product_id', 'manufacturer_pref', type="char", relation="product.product", string="Manufacturer Code", store=True),
    Quelqu'un peut aider ?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut
    Si c'est le champ name que tu veux afficher il faut faire un fields.related de type many2one du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fields.related('object1_id, object2_id, type="many2one", ...)
    et cela t'affichera automatiquement le champ name de object2_id.
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Retraiter
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraiter

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    J'ai essayer plusieurs fois de faire des champs related many2one mais sans succes. Il semble que je ne suis pas en mesure de faire le bon chemin pour la relation

    purchase_order_line.manufacturer = purchase_order_line.product_id -> product_product.id -> product_product.manufacturer -> res_partner.id -> res_partner.name

  9. #9
    Membre à l'essai
    Homme Profil pro
    Retraiter
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraiter

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    J'ai ajouter la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'manufacturer_pname': fields.related('product_id', 'manufacturer_pname', type="char", relation="product.product", string="Manufacturer", store=True),
    qui elle aussi fait partie de la table product.product sans probleme mais, des que j'ajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'manufacturer': fields.related('product_id', 'manufacturer', type="many2one", relation="product.product", string="Manufacturier", store=True),
    j'ai des erreures...

    En modifiant la ligne de cette facon, (Type Char)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'manufacturer': fields.related('product_id', 'manufacturer', type="char", relation="product.product", string="Manufacturier", store=True),
    j'ai au moins quelque chose qui s'inscrit dans la DB:

    browse_record(res.partner, 1654)

    1654 est le bon manufacturier dans res.partner, donc, oui, c'est pres du but mais, pas encore au point !!!

  10. #10
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut
    Essaye avec relation="res.partner"
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Retraiter
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraiter

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Avec 'res.partner':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fields.related('product_id', 'manufacturer', type="char", relation="res.partner", string="Manufacturier", store=True),
    j'avait toujours le meme resultat mais, en ajoutant type="many2one", c'est finalement le code du partenaire qui s'affiche

    donc, solution finale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fields.related('product_id', 'manufacturer', type="many2one", relation="res.partner", string="Manufacturier", store=True),

    Merci a tous pour ce long combat :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Utilisation d'un champ de type pièce jointe dans une table liée
    Par lio33 dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/04/2012, 11h39
  2. Deux Champs de type Recherche liés dans une même liste.
    Par hassine dans le forum Configuration
    Réponses: 6
    Dernier message: 16/09/2009, 16h55
  3. Deux Champs de type Recherche liés dans une même liste.
    Par hassine dans le forum SharePoint
    Réponses: 6
    Dernier message: 16/09/2009, 16h55
  4. [MySQL] [Booleen] Récupérer plusieurs champs de type BIT(1) d'une table MySQL
    Par Longrais dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/05/2009, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo