When is used a different primary_key (no integer) in One-to-one relations, id is always a integer
class Nic(meta.Model):
fields = (
meta.CharField('name', maxlength=4),
)
class Network(meta.Model):
fields = (
meta.OneToOneField(nics.Nic),
meta.CharField('name', maxlength=3, choices=NETWORK_TYPES, unique=True),
)
BEGIN;
CREATE TABLE nics_nics (
id integer NOT NULL PRIMARY KEY,
name varchar(4) NOT NULL
);
CREATE TABLE nics_networks (
id integer NOT NULL PRIMARY KEY REFERENCES nics_nics (id),
name varchar(3) NOT NULL UNIQUE
);
COMMIT;
id integer NOT NULL PRIMARY KEY REFERENCES nics_nics (id), -> OK
class Nic(meta.Model):
fields = (
meta.CharField('name', maxlength=4, primary_key=True),
)
class Network(meta.Model):
fields = (
meta.OneToOneField(nics.Nic),
meta.CharField('name', maxlength=3, choices=NETWORK_TYPES, unique=True),
)
BEGIN;
CREATE TABLE nics_nics (
name varchar(4) NOT NULL PRIMARY KEY
);
CREATE TABLE nics_networks (
id integer NOT NULL PRIMARY KEY REFERENCES nics_nics (name),
name varchar(3) NOT NULL UNIQUE
);
COMMIT;
id integer NOT NULL PRIMARY KEY REFERENCES nics_nics (name), -> Bug
It should be varchar in this case.