Django Factory Boy - 反向依赖(反向ForeignKey)常见收件人

时间:2017-06-19 08:40:27

标签: django factory-boy

我是FactoryBoy的新手。我正在尝试使用文档中的确切示例示例:reverse dependencies

1)" UserLogFactory"是否正确?提到的是#34;如此明显"一个人应该像以下一样自己做:

class UserLogFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = models.UserLog

2)我得到AttributeError

  

输入对象' UserLog'没有属性' ACTION_CREATE'

我搜索了互联网,我找到了1个参考文献(github error report),他们似乎在同一天自己解决了这个问题。他没有提到解决方案,但从他的评论中,我认为这是显而易见的......

提前感谢您的帮助!
亲切的问候。

1 个答案:

答案 0 :(得分:1)

根据关于RelatedFactorySubFactory的工厂男孩文档, 您在RelatedFactory创建中定义的命名参数将传递给UserLogFactory,因此action应该是UserLogFactory中的字段。

log = factory.RelatedFactory(UserLogFactory, 'user', action=models.UserLog.ACTION_CREATE)

发生AttributeError是因为UserLog缺少ACTION_CREATE的常量定义,我认为这是UserLog.action字段的可能选择之一。

这是定义UserLog模型的可行方法:

class UserLog(models.Model):
    ACTION_CREATE = 'CREATE'
    ACTION_UPDATE = 'UPDATE'

    ACTION_CHOICES = (
        (ACTION_CREATE, 'create'),
        (ACTION_UPDATE, 'update'),
    )
    user = models.ForeignKey(User)
    action = models.CharField(choices=ACTION_CHOICES)

有关choices的更多信息,请查看Django choices docs