Django模型工厂获得或创建

时间:2017-12-10 07:13:17

标签: django django-models

我有一个如下定义的Django模型

class CustomModel(models.Model):
    column = models.CharField(max_length=50, unique=True)

为模型定义工厂

class CustomModelFactory(DjangoModelFactory): column = 'V1' FACTORY_FOR = CustomModel

我如何确保工厂每次都实现get_or_create而不是create? 有谁知道如何做到这一点?

2 个答案:

答案 0 :(得分:0)

实现此目的的方法是将Factory类构造为

children

答案 1 :(得分:0)

根据工厂文档: https://factoryboy.readthedocs.io/en/latest/orms.html#factory.django.DjangoOptions.django_get_or_create

使用get_or_create代替create的方法是在将用于获取的字段列表中添加“ FACTORY_DJANGO_GET_OR_CREATE”:

class UserFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = 'myapp.User'  # Equivalent to ``model = myapp.models.User``
        django_get_or_create = ('username',)

所以在您的示例中,它看起来像这样:

    class CustomModelFactory(DjangoModelFactory):
        class Meta:
            model = CustomModel
            django_get_or_create = ('column',)