如何向数据库列添加属性

How to add attributes to database columns

我目前正在为我的数据库创建正确的数据库列。我创建了两个表并使用了 alter:

CREATE TABLE stores (
    id SERIAL PRIMARY KEY,
    store_name TEXT
    -- add more fields if needed
);


CREATE TABLE products (
    id SERIAL, 
    store_id INTEGER NOT NULL,
    title TEXT,
    image TEXT,
    url TEXT UNIQUE, 
    added_date timestamp without time zone NOT NULL DEFAULT NOW(),
    PRIMARY KEY(id, store_id)
);


ALTER TABLE products
ADD  CONSTRAINT "FK_products_stores" FOREIGN KEY ("store_id")
        REFERENCES stores (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE RESTRICT;

现在我正尝试将它与 PeeWee 一起使用,我已经成功地完成了一小步,即:

class Stores(Model):
    id = IntegerField(column_name='id')
    store_id = TextField(column_name='store_name')

class Products(Model):
    id = IntegerField(column_name='id')
    store_id = IntegerField(column_name='store_id')
    title = TextField(column_name='title')
    url = TextField(column_name='url')
    image = TextField(column_name='image')

但是我的问题是我用过:

ALTER TABLE products
ADD  CONSTRAINT "FK_products_stores" FOREIGN KEY ("store_id")
        REFERENCES stores (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE RESTRICT;

这意味着我确实有一个外键,但我不太确定如何申请将外键与 PeeWee 一起使用。我想知道我该怎么做?

您需要将 ForeignKeyField 添加到 Products 并删除 store_id

class Products(Model):
    id = IntegerField(column_name='id')
    title = TextField(column_name='title')
    url = TextField(column_name='url')
    image = TextField(column_name='image')
    store = ForeignKeyField(Stores, backref='products')