我是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),他们似乎在同一天自己解决了这个问题。他没有提到解决方案,但从他的评论中,我认为这是显而易见的......
提前感谢您的帮助!
亲切的问候。
答案 0 :(得分:1)
根据关于RelatedFactory和SubFactory的工厂男孩文档,
您在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