Django 模型工厂获取或创建

Django Model Factory get or create

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

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

为模型定义工厂

from factory_boy import DjangoModelFactory
class CustomModelFactory(DjangoModelFactory):
    
    column = 'V1'

FACTORY_FOR = CustomModelFactory()

我如何确保工厂实施 get_or_create 而不是每次都创建?

有人知道怎么做吗?

实现这个的方法是按如下方式构建你的工厂class:

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

FACTORY_FOR = CustomModel

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

他们使用 get_or_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',)