当两个或多个模型有一个共同的外键时,我的工厂不断遇到问题,而每个模型都创建了自己的对象,而它们应该具有相同的对象。
为了说明问题,这里是一个简化的模型结构:
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
具有Audio
和Subtitles
,并且两者都有一个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)