如何描述SqlAlchemy中Django ORM的一对一关系?

2024-04-28 17:45:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django有以下型号:

class News(models.Model):
    title = models.CharField(max_length=1000)
    # some fields
    image = models.ForeignKey("media.Image",blank=True, null=True)

# and in another django module
class Image(models.Model):
    url = models.URLField(max_length=1000)

在Postgres中,它看起来像:

=> \d newsfeed_news

   Column    |           Type           |                         Modifiers                          
-------------+--------------------------+------------------------------------------------------------
 id          | integer                  | not null default nextval('newsfeed_news_id_seq'::regclass)

...

 image_id    | integer                  | 

这意味着表中的字段“Image”只是整数字段,包含Image的ID。你知道吗

我试图在炼金术中建立这些关系:

class Image(Base):
    __tablename__ = 'media_image'
    id = Column(Integer, primary_key=True)
    url = Column('url',String)

class newsTable(Base):
    __tablename__ = 'media_news'
    id = Column(Integer, primary_key=True)
    # some fields
    image_id = Column(Integer, ForeignKey('Image.id'))
    image = relationship("Image", uselist=False)

但我有以下错误:

Can't find any foreign key relationships between 'newsfeed_news' and 'media_image'. Could not determine join condition between parent/child tables on relationship newsTable.image - there are no foreign keys linking these tables.

Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint, or specify a 'primaryjoin' expression.

我做错了什么?你知道吗


Tags: keyimageidtrueurlmodelmodelscolumn
1条回答
网友
1楼 · 发布于 2024-04-28 17:45:03

根据文档^{}接受column参数,该参数定义为:

A single target column for the key relationship. A Column object or a column name as a string: tablename.columnkey or schema.tablename.columnkey.

尝试将列名指定为字符串,但没有名为Image的表。您可以直接从Image模型引用Column对象:

image_id = Column(Integer, ForeignKey(Image.id))

或提供正确的表名:

image_id = Column(Integer, ForeignKey('media_image.id'))

相关问题 更多 >