小编Bjö*_*son的帖子

如何使用相同的外键为 Django 模型创建工厂男孩工厂

当两个或多个模型有一个共同的外键时,我的工厂不断遇到问题,而每个模型都创建了自己的对象,而它们应该具有相同的对象。

为了说明问题,这里是一个简化的模型结构:

class Language (models.Model):
    code = models.CharField(max_length=3, unique=True)


class Audio(models.Model):
    language = models.ForeignKey(Language)
    soundfile = models.FileField()


class Subtitles(models.Model):
    language = models.ForeignKey(Language)
    text = models.TextField()


class Recording(models.Model):
    audio = models.ForeignKey(Audio)
    subtitles = models.ForeignKey(Subtitles)
Run Code Online (Sandbox Code Playgroud)

所以 aRecording具有AudioSubtitles,并且两者都有一个Language对于每种语言代码都是唯一的。

这是这种结构的工厂。

class LanguageFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = Language


class AudioFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = Audio

    language = factory.SubFactory(LanguageFactory, code='en1')


class SubtitlesFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = Subtitles

    language = factory.SubFactory(LanguageFactory, code='en1')


class RecordingFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = Recording …
Run Code Online (Sandbox Code Playgroud)

django factory-boy

6
推荐指数
1
解决办法
3925
查看次数

标签 统计

django ×1

factory-boy ×1