This is a complete reference to all fields that exist in Odoo (as of version 12.0) with the required and optional attributes for each field.
class Many2one(_Relational):
class One2many(_RelationalMulti):
class Many2many(_RelationalMulti):
class Boolean(Field):
class Integer(Field):
class Float(Field):
class Monetary(Field):
class Char(Field):
class Text(Field):
class Html(Field):
class Date(Field):
class Datetime(Field):
class Binary(Field):
class Selection(Field):
Many2one
A relationship field defining that Model A has a single reference to Model B. A good example of this, in
general, is that Sales Order
sale.order has a partner_id = fields.Many2one
reference to res.partner . This means that each sales order has a single Customer/Partner.

One2many
A relationship field defining that Model A has multiple references to Model B and Model B has a
corresponding Many2one. A good example of this, in general, is that Sales Order sale.order
has a
order_line = fields.One2many reference to
sale.order.line and the sale.order.line model has a single reference back to the
order via an
order_id = fields.Many2one.

Many2many
A relationship field defining that Model A has multiple references to Model B records and Model B has
multiple references to Model A records. A good example of this, in general, is that Sales Order
sale.order has a tag_ids = fields.Many2many
reference to crm.tag.lead. But a single tag can be assigned to many different order records.

Boolean Field
A simple bool type field that stores either a
True or a False value.

Integer Field
An int4 type field which stores an integer value.

Float Field
A float8 type field which stores a floating point number.

Monetary Field
A special version of a float8 column which automatically displays on the frontend in a certain
currency.

Char Field
A char type column field which will stores string values. This is typically used for short strings
because it has a default max value of 255 characters.

Text Field
A text type column field which will store long-form string values. This is typically used for
longer strings and descriptions because it has no max value for strings.

Html Field
Another text type column that stores long-form strings, except it assumes that the field will
be populated with HTML context. This alters the frontend to display formatted HTML context instead of standard
utf-8 text.

Selection Field
A selection or enum type column that defines a set of fixed values that the user can select
from. A good example of this is the
states field on a sales order. There are many different events hard linked to the sales order
states, so we must fix a list of options.

Date Field
A date type column that stores dates without times.

Datetime Field
A datetime type column that stores datetime values.

Binary Field
A bytea type column that stores binary string values. In the case of Odoo it’s base64 encoded
binary strings typically.
These fields are ideal for storing documents or images. The frontend of Odoo will then render these via <img/> tags.

Thanks For Reading
I appreciate you taking the time to read any of my articles. I hope it has helped you out in some way. If you're looking for more ramblings, take a look at theentire catalog of articles I've written. Give me a follow on Twitter or Github to see what else I've got going on. Feel free to reach out if you want to talk!