gpt4 book ai didi

python - factory-boy 子工厂传递对象而不是键

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:18 27 4
gpt4 key购买 nike

我正在使用带有 SQLAlchemy 的 factory boy。

我正在尝试创建 Fact 对象,我希望工厂男孩生成作为 Fact 外键的 PatientDim 对象。但是 Subfactory 不传递键,而是将整个对象传递给外键字段。

我怎样才能只通过 Subfactory 传递 PatientDim key ?

工厂.py

class FactFactory(SQLAlchemyModelFactory):
class Meta:
model = models.Fact
sqlalchemy_session = common.Session

patient_id = factory.SubFactory(PatientDimFactory)

class PatientDimFactory(SQLAlchemyModelFactory):
class Meta:
model = models.PatientDim
sqlalchemy_session = common.Session

模型.py

class Fact(TimeStampedModel):
class Meta:
db_table = 'fact'

id = Column(Integer, primary_key=True)
patient_id = Column('patient_id', Integer, ForeignKey(PatientDim.__table__.c.id), nullable=False)
patient = relationship(PatientDim, foreign_keys='Fact.patient_id' )

Base = declarative_base()
class PatientDim(TimestampMixin, Base):
__tablename__ = 'patient_dim'

id = Column('id', Integer, primary_key=True)

最佳答案

这看起来与我在这个问题中发现的问题相同:Why isn't SQLAlchemy translating this object generated by a FactoryBoy SubFactory into a foreign key?基于此,问题是根据 patient_id 列而不是 patient 关系命名 SubFactory。

在此处的示例中:https://github.com/FactoryBoy/factory_boy/blob/master/examples/flask_alchemy/demoapp_factories.py你可以看到他们根据关系命名 SubFactory,而不是外键的列。所以看起来将其更新为 patient = factory.SubFactory(PatientDimFactory) 应该可行。

关于python - factory-boy 子工厂传递对象而不是键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com