我已經放在一起來保存配方。它使用了一個表單和一個內聯formset。我有用戶使用含有食譜的文本文件,他們希望剪切和粘貼數據以使輸入更容易。我已經計算出如何在處理原始文本輸入後填充表單部分,但我無法弄清楚如何填充內聯表單。Django Inline Formsets的初始數據
似乎這個解決方案几乎拼寫在這裏: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()如上所示我可以成功啓動頁面。我已經嘗試了一些方法來養活的formset我已經確定,包括數量,unit_of_measure與配料:
- 設置初始數據,但不用於在線表單集
- 傳入一個字典工作,但其產生的管理形式錯誤
- 打得四處初始化,但我有點不在我的深度有
不勝感激的任何建議。
偉大的建議亞蘭,非常感謝你。我會在今天嘗試這些選項。我特別喜歡有一個簡單的選擇... – Sinidex 2010-07-19 14:16:26
使用zip絕對的作品,我可以證實,以通常的方式保存表單也可以。正如你所指出的,我仍然需要將解析後的文本與相關的成分和度量單位相匹配,但我認爲這應該是可以管理的。好的解決方案 – Sinidex 2010-07-19 17:04:26
是的,是的。這是一個很好的解決方案!我很難做到這一點。我首先研究如何構建集合中的每個表單。然後在一個表單(而不是formset)的基礎上實現了初始*做*工作。在zip中,我們相信™ – Flowpoke 2015-06-05 15:14:03