Django Factory Boy - 反向依赖(反向外键)常见食谱

MZA*_*MZA 5 django factory-boy

我是 FactoryBoy 的新手。我正在尝试文档中确切示例的示例:反向依赖关系

1)提到的“UserLogFactory”是否“如此明显”,应该自己制作,如下所示:

class UserLogFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = models.UserLog
Run Code Online (Sandbox Code Playgroud)

2)我得到AttributeError

类型对象“UserLog”没有属性“ACTION_CREATE”

我在网上搜索了一下,发现了 1 个参考文献(github 错误报告),他似乎在同一天就自己解决了这个问题。他没有提到解决方案,但从他的评论来看,我认为这是显而易见的......

先谢谢您的帮助!
亲切的问候。

Ale*_*dov 5

根据factory-boy关于RelatedFactorySubFactory的文档,您在创建中定义的命名参数RelatedFactory将被传递到UserLogFactory,因此action预计该参数将成为UserLogFactory中的字段。

log = factory.RelatedFactory(UserLogFactory, 'user', action=models.UserLog.ACTION_CREATE)
Run Code Online (Sandbox Code Playgroud)

发生 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)
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请choices查看Django 选择文档