Skip to Content

Προσαρμοσμένα Πεδία στο Odoo: Ολοκληρωμένος Οδηγός

Μάθετε πώς να προσθέτετε προσαρμοσμένα πεδία σε οποιοδήποτε μοντέλο Odoo — είτε με το φιλικό περιβάλλον του Odoo Studio είτε γράφοντας κώδικα Python — και γιατί αυτή η δυνατότητα μπορεί να μεταμορφώσει την καθημερινή λειτουργία της επιχείρησής σας.
6 Μαρτίου 2026 από
Προσαρμοσμένα Πεδία στο Odoo: Ολοκληρωμένος Οδηγός
Dasolo
| No comments yet

Κάθε επιχείρηση έχει τις δικές της ανάγκες πληροφορίας —στοιχεία που δεν περιλαμβάνονται πάντα σε ένα γενικό πακέτο λογισμικού— και εδώ μπαίνουν τα προσαρμοσμένα πεδία στο Odoo.


Αντί να αλλάζετε τις εσωτερικές διαδικασίες σας για να ταιριάξουν σε ένα προκαθορισμένο μοντέλο δεδομένων, το Odoo σας επιτρέπει να προσθέσετε νέες ιδιότητες σε σχεδόν κάθε εγγραφή — πελάτη, προσφορά, προϊόν ή τιμολόγιο — και να αποθηκεύσετε αυτά τα δεδομένα δίπλα στα υπόλοιπα πεδία.


Αυτός ο οδηγός συγκεντρώνει τα απαραίτητα: τι είναι τα προσαρμοσμένα πεδία, πώς δουλεύουν τεχνικά, πώς να τα δημιουργήσετε με ή χωρίς κώδικα και πώς να τα οργανώσετε ώστε το σύστημά σας να παραμένει καθαρό και εύκολα συντηρήσιμο.

Τι είναι ένα προσαρμοσμένο πεδίο στο Odoo


Στην πράξη, ένα προσαρμοσμένο πεδίο είναι μία επιπλέον στήλη στη βάση δεδομένων ενός υπάρχοντος μοντέλου του Odoo — ένα συγκεκριμένο κομμάτι πληροφορίας συνδεδεμένο με μια εγγραφή, που λειτουργεί όπως οποιοδήποτε ενσωματωμένο πεδίο.


Στο Odoo τα προσαρμοσμένα πεδία φέρουν συνήθως το πρόθεμα x_. Τα πεδία που φτιάχνετε με το Odoo Studio θα έχουν ονόματα τύπου x_studio_priority_level, ενώ αν τα προσθέσετε προγραμματιστικά μπορείτε να χρησιμοποιήσετε ένα εταιρικό πρόθεμα, π.χ. x_acme_cost_center.


Από την πλευρά του χρήστη, ένα προσαρμοσμένο πεδίο εμφανίζεται και συμπεριφέρεται σαν οποιοδήποτε άλλο: φόρμες, λίστες, φίλτρα, ομαδοποιήσεις και εκτυπώσεις μπορούν να το χρησιμοποιήσουν χωρίς να γίνονται αντιληπτές οι τεχνικές λεπτομέρειες.


Διαθέσιμοι τύποι πεδίων

Το Odoo υποστηρίζει πληθώρα τύπων πεδίων για να καλύψει τις περισσότερες ανάγκες δεδομένων:

  • Char (Σύντομο κείμενο): Μικρές ετικέτες ή κωδικοί αναφοράς
  • Text (Μεγάλο κείμενο): Πολλαπλών γραμμών σημειώσεις ή περιγραφές
  • Integer: Ακέραιοι αριθμοί για μετρήσεις ή μετρητές
  • Float (Δεκαδικά): Αριθμοί με υποδιαστολή για ποσοστά ή μετρήσεις
  • Monetary: Χρηματικό ποσό συνδεδεμένο με νόμισμα
  • Boolean: Ναι/Όχι ή ενεργό/ανενεργό
  • Date / Datetime: Ημερομηνία ή σφραγίδα χρόνου
  • Selection: Επιλογή από προκαθορισμένη λίστα
  • Many2one: Σύνδεση προς μία άλλη εγγραφή
  • One2many: Λίστα σχετικών εγγραφών από άλλο μοντέλο
  • Many2many: Σύνδεση με πολλαπλές εγγραφές
  • Binary: Επισύναψη αρχείου
  • HTML: Πλούσιο κείμενο με μορφοποίηση

Η σωστή επιλογή τύπου εξαρχής προλαμβάνει προβλήματα αργότερα —όταν οι δυνατές τιμές είναι γνωστές, μια Selection λίστα εξασφαλίζει καθαρά δεδομένα αντί για ελεύθερο κείμενο.

Πώς λειτουργεί το πεδίο


Το Odoo βασίζεται σε ένα ORM (Object-Relational Mapping) που συνδέει κάθε φόρμα και εγγραφή με ένα Python μοντέλο και ένα πίνακα στη βάση PostgreSQL. Όταν προσθέτετε ένα προσαρμοσμένο πεδίο, το Odoo το καταχωρεί στο μεταδεδομένο του και δημιουργεί τη σχετική στήλη στη βάση αυτόματα.


Αυτή η μεταδεδομένη προσέγγιση κάνει το μοντέλο δεδομένων ευέλικτο: δεν αλλάζετε πηγαίο κώδικα αλλά επεκτείνετε το μοντέλο μέσω του πίνακα ir.model.fields, τον οποίο το Odoo διαβάζει κατά την εκκίνηση και δημιουργεί δυναμικά τα πεδία.


Πεδία ορισμένα σε κώδικα έναντι πεδίων που ορίζονται στη βάση

Σε παραδοσιακή ανάπτυξη Odoo, τα πεδία δηλώνονται σε Python κλάσεις μοντέλων χρησιμοποιώντας το πλαίσιο του Odoo. Έτσι ορίζεται ένα πεδίο στο codebase.


Παράδειγμα ορισμού πεδίου σε μοντέλο Python:

Τα πεδία που δημιουργούνται μέσω διεπαφής ή API καταχωρούνται στο ir.model.fields με state = 'manual' και φορτώνονται κατά το runtime. Και οι δύο προσεγγίσεις καταλήγουν σε πραγματική στήλη στη βάση και εμφανίζουν την ίδια συμπεριφορά για τον χρήστη.


Σχέσεις μεταξύ μοντέλων και αμοιβαιότητα

Όταν φτιάχνετε ένα Many2one που δείχνει σε άλλο μοντέλο, το Odoo περιμένει να υπάρχει το αντίστοιχο One2many στην άλλη πλευρά —δεν είναι απλώς σύμβαση, αλλά ο τρόπος που το ORM προσανατολίζεται στις σχέσεις.


Για παράδειγμα, αν προσθέσετε x_project_id (Many2one προς project.project) σε μια προσφορά, καλό είναι να υπάρχει και x_sale_order_ids (One2many προς sale.order) στο μοντέλο έργου, ώστε να μπορείτε να δείτε από το έργο όλες τις συνδεδεμένες παραγγελίες με τον τυπικό τρόπο.


Υπολογιζόμενα (Computed) πεδία

Τα υπολογιζόμενα πεδία βρίσκουν την τιμή τους αυτόματα βάσει άλλων πεδίων. Σε τεχνικές προσαρμογές ορίζετε μια Python μέθοδο με το παράμετρο compute. Τέτοια πεδία είναι συνήθως μόνο ανάγνωσης και ανανεώνονται όταν αλλάξουν οι εξαρτήσεις τους.


Τα computed πεδία έχουν ισχύ, αλλά απαιτούν κώδικα — δεν μπορούν να δημιουργηθούν πλήρως από το Studio χωρίς developer mode και Python γνώσεις.

Περίπτωσεις χρήσης στις επιχειρήσεις


Σε πολλά έργα Odoo που υλοποιούμε, τα προσαρμοσμένα πεδία εμφανίζονται σχεδόν πάντα. Ακολουθούν πέντε πραγματικά παραδείγματα χρήσης.

1. CRM: Πιο ακριβής αξιολόγηση leads

Οι στάνταρ φόρμες leads συλλέγουν επαφές και στάδια, αλλά πωλήσεις χρειάζονται επιπλέον. Μια Selection για "Κλάδος Επιχείρησης" ή ένα Many2one προς εσωτερικό μοντέλο "Τμηματική Αγορά" βοηθάει τους εκπροσώπους να ταξινομήσουν τα leads και τη διοίκηση να εξάγει αναφορές ανά τμήμα.


2. Πωλήσεις: Εσωτερικοί κωδικοί έργου

Όταν τιμολογείτε ανά έργο, είναι χρήσιμο κάθε προσφορά ή παραγγελία να φέρει έναν εσωτερικό κωδικό έργου. Ένα απλό Char πεδίο «Κωδικός Έργου» στο sale.order εμφανίζεται σε εκτυπώσεις και επιτρέπει φιλτράρισμα και ομαδοποίηση στις αναφορές χωρίς πλήρη ενσωμάτωση project.


3. Αποθήκη: Χαρακτηριστικά προϊόντων

Κατασκευαστές ή εξειδικευμένοι προμηθευτές συχνά χρειάζονται τεχνικά πεδία όπως «Εγγύηση (μήνες)» (Integer), «Πρότυπο Πιστοποίησης» (Selection) ή «Χώρα Προέλευσης» (Many2one προς res.country). Αυτά ενσωματώνονται στη φόρμα προϊόντος και εμφανίζονται στις αναφορές αποθέματος.


4. Οικονομικά: Κέντρα κόστους και προϋπολογισμοί

Τα χρηματοοικονομικά απαιτούν να επισημαίσουν τιμολόγια ή καταχωρήσεις με κέντρο κόστους. Ένα Many2one στο account.move προς ένα προσαρμοσμένο μοντέλο «Κέντρο Κόστους» δίνει λεπτομερή κατανομή κόστους χωρίς αλλαγές στο analytic accounting. Φίλτρα, πίβοτ και εξαγωγές σέβονται το νέο πεδίο άμεσα.


5. HR: Προσαρμοσμένα δεδομένα ένταξης

Το HR συχνά συλλέγει κατά την πρόσληψη πληροφορίες που δεν υπάρχουν στα στάνταρ πεδία: ειδικοί τύποι συμβάσεων, εσωτερικές κατηγορίες δεξιοτήτων ή στοιχεία οχημάτων. Προσαρμοσμένα πεδία στο hr.employee κρατούν αυτά τα δεδομένα μέσα στο Odoo, αναζητήσιμα και διαθέσιμα για αναφορές.

Δημιουργία ή προσαρμογή πεδίου


Υπάρχουν δύο κύριες οδοί για να δημιουργήσετε προσαρμοσμένα πεδία —η επιλογή εξαρτάται από το τεχνικό σας επίπεδο και την πολυπλοκότητα του πεδίου.


Επιλογή 1: Odoo Studio (Χωρίς κώδικα)

Το Odoo Studio είναι ο γρηγορότερος τρόπος για χρήστες επιχειρήσεων. Με ενεργοποιημένο το Studio μπορείτε να προσθέσετε πεδία στη φόρμα σε λίγα κλικ:

  1. Ανοίγετε την εφαρμογή και τη φόρμα όπου θέλετε το πεδίο (π.χ. φόρμα παραγγελίας)
  2. Κλικάρετε το εικονίδιο μολυβιού για είσοδο σε Studio
  3. Σύρετε τον τύπο πεδίου από το αριστερό πάνελ στη φόρμα
  4. Ορίζετε την ετικέτα, το τεχνικό όνομα και τις επιπλέον ιδιότητες
  5. Αποθηκεύετε και βγαίνετε από το Studio

Το Studio καταχωρεί το πεδίο στο ir.model.fields με το πρόθεμα x_studio_ και το προσθέτει στη φόρμα χωρίς απαίτηση επανεκκίνησης ή ανάπτυξης —ιδανικό για απλά πεδία χωρίς ειδική λογική.


Επιλογή 2: Τεχνική προσαρμογή μέσω API

Για έργα προσαρμογής, τα πεδία μπορούν να δημιουργηθούν προγραμματιστικά μέσω XML-RPC ή με τη δημιουργία Python module. Αυτή η προσέγγιση είναι κατάλληλη για computed fields, σύνθετα domain φίλτρα ή για να διατηρείτε αλλαγές σε σύστημα version control.


Ένα παράδειγμα δημιουργίας selection πεδίου μέσω API σε προσφορά:


Το παράδειγμα δείχνει τη ροή: εύρεση μοντέλου sale.order και εγγραφή στο ir.model.fields με τις ιδιότητες του πεδίου —συνηθισμένη πρακτική για αυτοματοποιημένες ρυθμίσεις.

Αυτή η μέθοδος είναι μέρος της τυπικής ροής για developers όταν θέλουν να προσθέσουν πεδία χωρίς να αλλάξουν αρχεία πηγαίου κώδικα —χρήσιμη για απομακρυσμένες ρυθμίσεις και scripts ανάπτυξης.


Για πλήρη προσέγγιση σε Python module, τα πεδία ορίζονται σε κλάσεις μοντέλων και φορτώνονται μέσω του μηχανισμού modules του Odoo —η πιο συντηρήσιμη λύση για πεδία που πρέπει να επιβιώσουν σε αναβαθμίσεις και να παρακολουθούνται σε version control.


Προσθήκη του πεδίου στη φόρμα (View)

Η δημιουργία πεδίου δεν σημαίνει αυτόματα ότι θα φαίνεται στη διεπαφή. Πρέπει να το προσθέσετε στη σωστή φόρμα ή λίστα. Με το Studio γίνεται ταυτόχρονα. Σε τεχνική προσέγγιση τροποποιείτε το XML view ή κληρονομείτε/ενέχετε το πεδίο σε ένα inherited view.


Καλές πρακτικές


Τα προσαρμοσμένα πεδία είναι απλά στη δημιουργία, αλλά χωρίς σχεδιασμό μπορούν να προκαλέσουν προβλήματα που διορθώνονται δύσκολα. Οι παρακάτω κανόνες βοηθούν να διατηρήσετε το σύστημα καθαρό.


Προτιμήστε Selection αντί ελεύθερο κείμενο όπου μπορείτε

Όταν οι τιμές είναι περιορισμένες, μια Selection αποτρέπει ασυνέπειες («Client», «client», «CLIENT») που σπάνε φίλτρα και αναφορές. Ένα dropdown επιβάλλει ομοιομορφία χωρίς πρόσθετο κόστος.


Δώστε ξεκάθαρα και συνεπή ονόματα στα πεδία

Το τεχνικό όνομα (π.χ. x_project_type) πρέπει να περιγράφει το περιεχόμενο, όχι τη θέση στη φόρμα. Όνομα τύπου x_field_1 γίνεται αδύνατο να συντηρηθεί. Χρησιμοποιήστε κανόνες ονοματοδοσίας και τεκμηριώστε τη χρήση.


Μην υπερφορτώνετε τα native μοντέλα

Αν προσθέσετε δέκα πεδία σε sale.order ίσως καλύτερα να δημιουργήσετε ένα νέο μοντέλο. Όταν ένα σύνολο πεδίων αντιπροσωπεύει μια νέα οντότητα (έργο, σύμβαση, πιστοποίηση), φτιάξτε custom model και συνδέστε το με Many2one.


Δοκιμάζετε πάντα σε staging βάση

Πριν κάνετε αλλαγές σε παραγωγή, δοκιμάστε σε αντίγραφο της βάσης. Η δημιουργία πεδίου είναι γενικά ασφαλής αλλά ένα λάθος μοντέλο ή τύπος απαιτεί χειροκίνητη διόρθωση —το staging το αποκαλύπτει νωρίς.


Τεκμηριώστε τα προσαρμοσμένα πεδία

Κρατήστε αρχείο για κάθε πεδίο: μοντέλο, τεχνικό όνομα, σκοπός και ποιος το ζήτησε. Οι εγκαταστάσεις Odoo συσσωρεύουν πεδία με τον χρόνο και χωρίς τεκμηρίωση είναι αδύνατο να γνωρίζετε ποια χρησιμοποιούνται ακόμη.


Χρησιμοποιήστε το σωστό εργαλείο για λογική υπολογισμού

Αν η τιμή εξαρτάται από άλλα πεδία, προτιμήστε computed field αντί να ζητάτε χειροκίνητη εισαγωγή. Αυτό μειώνει σφάλματα και ασυνέπειες —τα computed πεδία είναι μέρος του core functionality και έχουν καλές οδηγίες στην τεχνική τεκμηρίωση.

Συνηθισμένα λάθη


Ακόμη και έμπειρες ομάδες κάνουν τα ίδια λάθη με προσαρμοσμένα πεδία. Παρακάτω τα πιο συνηθισμένα.


Ξεχνάτε το One2many όταν φτιάχνετε ένα Many2one

Συχνό τεχνικό λάθος: αν προσθέσετε Many2one από μοντέλο Α προς Β χωρίς το αντίστοιχο One2many στο Β, «σπάει» η πλοήγηση από τη μια πλευρά. Οι χρήστες δεν βλέπουν τις σχετικές εγγραφές. Φτιάχνετε πάντα και τις δύο πλευρές.


Διαγραφή πεδίου με δεδομένα

Η διαγραφή ενός προσαρμοσμένου πεδίου αφαιρεί μόνιμα τη στήλη και όλα τα δεδομένα —δεν υπάρχει undo. Αν υπάρχει πιθανότητα μελλοντικής ανάγκης, αρχειοθετήστε ή αποκρύψτε το πεδίο αντί να το διαγράψετε.


Δημιουργία πεδίων απευθείας σε παραγωγή

Η αλλαγή σε ζωντανή βάση χωρίς δοκιμές είναι ρίσκο ακόμα και για απλά πεδία. Λάθη στο view προκαλούν σφάλματα στους χρήστες. Πρώτα validate σε περιβάλλον δοκιμών.


Σύγκρουση ονομάτων με στάνταρ πεδία

Το Odoo απορρίπτει όνομα που υπάρχει ήδη, αλλά μπορεί να δημιουργήσετε κατά λάθος όνομα που θα έρθει σε σύγκρουση σε μελλοντική εγκατάσταση module. Χρησιμοποιήστε εταιρικό πρόθεμα (π.χ. x_mycompany_) για να μειώσετε το ρίσκο.


Προσθήκη πεδίου στη φόρμα χωρίς σκέψη για UX

Όχι όλα τα πεδία πρέπει να είναι ορατά από προεπιλογή. Φορτωμένες φόρμες επιβραδύνουν τους χρήστες. Βάλτε ειδικά πεδία σε ξεχωριστή καρτέλα ή κάντε τα ορατά μόνο σε συγκεκριμένα context με domain-based κανόνες.


Ανακάτεμα Studio και τεχνικών πεδίων χωρίς στρατηγική

Όταν συνδυάζετε Studio και κώδικα χωρίς κανόνες, προκύπτουν πεδία με επικαλύψεις ή συγκρουόμενα ονόματα. Συμφωνήστε εξαρχής σε στρατηγική: Studio για απλά no-code πεδία και κώδικας για σύνθετη λογική —το ανάμειγμα χωρίς πολιτική δυσκολεύει τη συντήρηση.

Συμπέρασμα


Τα προσαρμοσμένα πεδία είναι ένας από τους πιο άμεσους και αποτελεσματικούς τρόπους να προσαρμόσετε το Odoo στην επιχείρησή σας. Δεν απαιτούν αλλαγές στον πηγαίο κώδικα, ενσωματώνονται φυσικά και δίνουν στους χρήστες τα δεδομένα που χρειάζονται χωρίς προσωρινές λύσεις.

Το σημαντικό είναι να σχεδιάσετε πριν δημιουργήσετε: διαλέξτε τον κατάλληλο τύπο, ονομάστε σωστά, σεβαστείτε τις σχέσεις μεταξύ πεδίων και τεκμηριώστε ό,τι προσθέτετε. Μια καλά σχεδιασμένη αρχιτεκτονική πεδίων κρατά το Odoo σας ευκολότερο στη συντήρηση και στην εξέλιξη.


Είτε χρησιμοποιείτε το Odoo Studio για γρήγορα no-code πεδία είτε γράφετε Python modules στο πλαίσιο ενός ευρύτερου έργου προσαρμογής, οι αρχές είναι οι ίδιες: ταιριάξτε το πεδίο με τα δεδομένα, κρατήστε το μοντέλο καθαρό και δοκιμάζετε πριν την παραγωγή.

Στην Dasolo βοηθάμε εταιρείες να σχεδιάσουν, να προσαρμόσουν και να βελτιστοποιήσουν το Odoo ώστε να ταιριάξει στις πραγματικές τους ροές εργασίας. Είτε χρειάζεστε λίγα προσαρμοσμένα πεδία είτε ένα πλήρες custom module, η ομάδα μας μπορεί να υποστηρίξει.

Επικοινωνήστε μαζί μας για καθοδήγηση στην υλοποίηση Odoo. Θα χαρούμε να ελέγξουμε την τρέχουσα ρύθμιση και να προτείνουμε τον πιο καθαρό δρόμο προς τα εμπρός.

Προσαρμοσμένα Πεδία στο Odoo: Ολοκληρωμένος Οδηγός
Dasolo 6 Μαρτίου 2026
Share this post
Σύνδεση to leave a comment