Sto provando a modellare le ricette in un libro di ricette. Ecco cosa ho finora:
class Recipe(models.Model):
title = models.CharField(max_length=255)
class Ingredient(models.Model):
class Meta:
ordering = ['name']
name = models.CharField(max_length=255, unique=True)
# Models how to combine ingredient quantities in a recipe
class RecipeStep(models.Model):
class Meta:
default_related_name = 'recipe_step_set'
number = models.PositiveSmallIntegerField(null=True, blank=True)
content = models.TextField()
recipe = models.ForeignKey(Recipe)
# Models a unit of measurement
class Unit(models.Model):
class Meta:
ordering = ['long_name']
long_name = models.CharField(max_length=60, unique=True)
short_name = models.CharField(max_length=60, unique=True)
# Models a measure of an ingredient in a recipe
class IngredientQuantity(models.Model):
class Meta:
default_related_name = 'ingredient_quantity_set'
verbose_name_plural = 'recipe ingredient quantities'
# Modeled as a string so we can do things like "1-2"
measure = models.CharField(max_length=10, null=True, blank=True)
unit = models.ForeignKey(Unit, on_delete=models.SET_NULL, null=True, blank=True)
ingredient = models.ForeignKey(Ingredient, on_delete=models.PROTECT)
preparation = models.CharField(null=True, blank=True, max_length=100)
recipe = models.ForeignKey(Recipe)
Questo funziona abbastanza bene nella maggior parte dei casi. Tuttavia, dì che ho una ricetta divisa in "sezioni". Considera quanto segue:
Glazed Cinnamon Buns
--
**Cinnamon Buns**
- 4 cups all purpose flour
- 1 package active dry yeast
- 1 cup warm soy or almond milk
- 1/2 cup white sugar
- 1/3 cup melted vegan margarine
- 1 teaspoon salt
- 1/2 cup unsweetened applesauce
**Cinnamon-Sugar Filling**
- 1 cup brown sugar
- 2.5 tablespoons cinnamon
- 1/3 cup vegan margarine, softened
**Icing**
- 1 cup powdered sugar or icing sugar
- 2-3 Tablespoons water
- 3-4 drops lemon extract
- a dash of nutmeg
1) In a large bowl, dissolve yeast in the warm soy/almond milk
...
Come posso modellare le ricette con più sezioni? Si noti qui che le istruzioni ( RecipeStep
oggetti) appartengono alla ricetta Glazed Cinnamon Buns. Idealmente mi piacerebbe che le quantità degli ingredienti fossero di proprietà di qualche tipo di oggetto genitore, e mi chiedo se c'è un modo migliore per farlo rispetto alla definizione di una relazione ricorsiva con Recipe
. Vorrei evitare questo, se possibile.