首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >factory-boy子工厂传递对象而不是键

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

Stack Overflow用户
提问于 2016-11-16 12:45:43
回答 2查看 1.1K关注 0票数 5

我正在使用SQLAlchemy的工厂男孩。

我正在尝试创建事实对象,并且我希望factory boy生成PatientDim对象,这些对象是事实的外键。但是Subfactory并不传递密钥,而是将整个对象传递给foreignkey字段。

如何才能仅通过子工厂传递PatientDim密钥?

Factories.py

代码语言:javascript
复制
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

Models.py

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2018-12-27 22:39:07

我今天的解决方法是:

从工厂生成dict数据

代码语言:javascript
复制
import factory
data = factory.build(dict, FACTORY_CLASS=FactFactory)

创建ForeignKey/subFactory对象

代码语言:javascript
复制
patient_dim = PatientDimFactory()

更改已创建数据中的foreignKey对象

代码语言:javascript
复制
data['patient_id '] = patient_dim.pk

在创建表单中使用create数据

代码语言:javascript
复制
form = MyCrateForm(data=data)
票数 2
EN

Stack Overflow用户

发布于 2020-08-15 03:41:30

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

在下面的示例中:https://github.com/FactoryBoy/factory_boy/blob/master/examples/flask_alchemy/demoapp_factories.py,您可以看到它们基于关系来命名SubFactory,而不是基于外键的列。因此,将其更新到patient = factory.SubFactory(PatientDimFactory)应该是可行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40624243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档