Я собрал форму, чтобы сохранить рецепт.Он использует форму и встроенный набор форм.У меня есть пользователи с текстовыми файлами, содержащими рецепты, и они хотели бы вырезать и вставить данные, чтобы сделать ввод проще.Я разработал, как заполнить часть формы после обработки ввода необработанного текста, но я не могу понять, как заполнить встроенный набор форм.
Кажется, что решение здесь почти прописано: http://code.djangoproject.com/ticket/12213 но я не могу собрать все воедино.
Мои модели:
#models.py
from django.db import models
class Ingredient(models.Model):
title = models.CharField(max_length=100, unique=True)
class Meta:
ordering = ['title']
def __unicode__(self):
return self.title
def get_absolute_url(self):
return self.id
class Recipe(models.Model):
title = models.CharField(max_length=255)
description = models.TextField(blank=True)
directions = models.TextField()
class Meta:
ordering = ['title']
def __unicode__(self):
return self.id
def get_absolute_url(self):
return "/recipes/%s/" % self.id
class UnitOfMeasure(models.Model):
title = models.CharField(max_length=10, unique=True)
class Meta:
ordering = ['title']
def __unicode__(self):
return self.title
def get_absolute_url(self):
return self.id
class RecipeIngredient(models.Model):
quantity = models.DecimalField(max_digits=5, decimal_places=3)
unit_of_measure = models.ForeignKey(UnitOfMeasure)
ingredient = models.ForeignKey(Ingredient)
recipe = models.ForeignKey(Recipe)
def __unicode__(self):
return self.id
Форма рецепта создается с использованием ModelForm:
class AddRecipeForm(ModelForm):
class Meta:
model = Recipe
extra = 0
Исоответствующий код в представлении (вызовы для анализа входных данных формы удалены):
def raw_text(request):
if request.method == 'POST':
...
form_data = {'title': title,
'description': description,
'directions': directions,
}
form = AddRecipeForm(form_data)
#the count variable represents the number of RecipeIngredients
FormSet = inlineformset_factory(Recipe, RecipeIngredient,
extra=count, can_delete=False)
formset = FormSet()
return render_to_response('recipes/form_recipe.html', {
'form': form,
'formset': formset,
})
else:
pass
return render_to_response('recipes/form_raw_text.html', {})
При пустом FormSet (), как указано выше, я могу успешно запустить страницу.Я пробовал несколько способов подачи в форму набора количества, unit_of_measure и ингредиентов, которые я определил, в том числе:
- установка исходных данных, но это не работает для встроенных форм форм
- , передаваясловарь, но это приводит к ошибкам формы управления
- , с которыми играется init , но я там немного не в себе
Любые предложения приветствуются.