2012-05-04 4 views
0

Итак, я хотел бы получить совет по настройке модели. У меня есть модель рецепта, которую я разрабатываю (план по размещению планшета на кухне). То, что я хотел бы иметь, - это иметь каждый рецепт, содержащий список ингредиентов, но также иметь соответствующий список количества, который соответствует списку ингредиентов. Идея состоит в том, что у меня есть модель Ингредиента, которая будет использоваться, чтобы отслеживать, какие ингредиенты у меня есть на руках, и сколько, и у модели Рецепта будет свой собственный список ингредиентов, а также какие количества необходимы. Таким образом, у меня были бы рецепты рецептов приложений, которые у меня есть, чтобы сделать, и спрятать их, у меня нет ингредиентов (или на самом деле это будет более сложным, но это идея). Вот моя текущая настройка:Поля модели Django

Ингредиент model.py

class Unit_of_Measure(models.Model): 

    """Unit_of_Measure model. This is used as the foriegnkey for the Quantity model unit_of_measure key.""" 

    class Meta: 
      verbose_name_plural = "Units of Measure" 

    def __unicode__(self): 
      return self.unit_of_measure 

    unit_of_measure = models.CharField(max_length=200) 

class Location(models.Model): 

    """Location model. This is used a the foriegnkey for the Ingredient model location key.""" 

    class Meta: 
      verbose_name_plural = "Locations" 

    def __unicode__(self): 
      return self.place 

    place = models.CharField(max_length=200) 

class Ingredient(models.Model): 

    """Ingredients model. Includes ingredient title, quantity on hand, location of ingredient (foreignkey), expiration date, and if it is a shop for ingrdient.""" 

    class Meta: 
      verbose_name_plural = "Ingredients" 

    def __unicode__(self): 
      return self.title 

    title = models.CharField(max_length=200) 
    quantity = models.CharField(max_length=200) 
    unit_of_measure = models.ForeignKey(Unit_of_Measure) 
    location = models.ForeignKey(Location) 
    expiration_date = models.DateTimeField() 
    shop_for = models.BooleanField() 

Рецепт model.py

class RecipeType(models.Model): 

    """Recipe type model. This is used as the foreign key for the Recipe model recipe style.""" 

    def __unicode__(self): 
      return self.style 

    style = models.CharField(max_length=200) 

class Recipe(models.Model): 

    """Recipe model. Includes recipe title, recipe style (dinner, snack, etc..), ingredient list (foreignkey), recipe instructions, storage style, and expiration date.""" 

    class Meta: 
      verbose_name_plural = "Recipes" 

    def __unicode__(self): 
      return self.title 

    title = models.CharField(max_length=200) 
    style = models.ForeignKey(RecipeType) 
    required_ingredient_list = models.ManyToManyField(Ingredient, related_name='additional_ingredient_list') 
    additional_ingredient_list = models.ManyToManyField(Ingredient, related_name='required_ingredient_list', blank=True) 
    recipe_instruction = models.TextField() 
    storage_style = models.CharField(max_length=200) 
    expiration_date = models.DateTimeField() 

Таким образом, любое предложение о том, как совпасть два списка полей? как «required_ingredient_list», соответствующий «required_ingredient_quantity_list» или что-то еще? Или лучшее решение? Или любые предложения вообще? Сейчас я могу сортировать рецепты по ингредиентам, но поскольку количество модели Ingredient является количеством, которое у меня есть на моей кухне, у меня нет поля для представления количеств, которые использует рецепт, это просто сказано в поле recipe_instruction. Halpz!

ответ

0

Используйте ссылку "through model", чтобы соединить рецепты с ингредиентами. Затем промежуточная модель могла иметь связанную единицу и числовую или строчную меру, связанную с этим.

+0

huh. Я добавил модель RecipeIngredient после рецепта в качестве сквозной модели, но ничего не отображается на странице администратора (models.Recipe добавлено поле «component.sign_list = models.ManyToManyField ('component.Ingredient', via = 'recipe.RecipeIngredient')) noooothing показывает на админ-страница для ингридиента.Какие идеи? – jonc

+0

никогда не было! Я получил его, просто пришлось добавить модель RecipeIngredient в RecipeAdmin как встроенный. Теперь он отображает ингредиенты рецептов на странице рецептов как встроенные. – jonc

Смежные вопросы