У меня проблемы с настройкой отношений «многие ко многим» с набором моделей django в factory boy, используя сквозные отношения. У меня есть куча рецептов и ингредиентов. Существует связь «многие ко многим» между рецептами и ингредиентами через модель, которая устанавливает количество. У меня есть фабрики для каждой модели, но я не могу их соединить.
упрощенные модели.py:
class Ingredient(models.Model):
name = models.CharField(max_length=40)
class Recipe(models.Model):
name = models.CharField(max_length=128)
ingredients = models.ManyToManyField(Ingredient, through='RecipeIngredient')
class RecipeIngredient(models.Model):
recipe = models.ForeignKey(Recipe)
ingredient = models.ForeignKey(Ingredient)
quantity = models.IntegerField(default=1)
упрощенные factory.py
class RecipeFactory(factory.django.DjangoModelFactory):
class Meta:
model = Recipe
class IngredientFactory(factory.django.DjangoModelFactory):
class Meta:
model = Ingredient
class RecipeIngredientFactory(factory.django.DjangoModelFactory):
class Meta:
model = RecipeIngredient
recipe = factory.SubFactory(RecipeFactory)
ingredient = factory.SubFactory(IngredientFactory)
quantity = 1
Я пытался возиться с factory.RelatedFactory, но на самом деле ничего не добился. В идеале я просто хочу сделать следующее:
recipe = RecipeFactory(name="recipe1")
ingredient = IngredientFactory(name="ingredient1")
ri = RecipeIngredientFactory(recipe=recipe, ingredient=ingredient)
Это, однако, не устанавливает отношение многие ко многим с обеих сторон, а также, по-видимому, не может создать саму модель рецепта. Кто-нибудь знает способ сделать это?
Редактировать:
Я также пробовал:
class RecipeWith3Ingredients(RecipeFactory):
ingredient1 = factory.RelatedFactory(RecipeIngredientFactory, 'recipe')
ingredient2 = factory.RelatedFactory(RecipeIngredientFactory, 'recipe')
ingredient3 = factory.RelatedFactory(RecipeIngredientFactory, 'recipe')
Но не могу понять, как я буду создавать эти объекты с уже существующим рецептом и набором ингредиентов.