定製.save()如果我創建使用modelformset_factory這樣一個formset:Django的 - 創造modelformset_factory
IngredientFormSet = modelformset_factory(RecipeIngredients, form=RecipeIngredientsForm)
formset = IngredientFormSet(request.POST)
和我的形式看起來像這樣
class RecipeIngredientsForm(forms.ModelForm):
Ingredient = forms.CharField(max_length= 100)
class Meta:
model = RecipeIngredients
exclude = ('weightmetric','recipe')
我會在哪裏把我的習慣。 save()方法?我會把它放在RecipeIngredientsForm下面嗎?
[潛在的解決方案]
您認爲做這樣的事情:
if formset.is_valid():
for form in formset:
obj = form.save(commit=False) #obj = RecipeIngredient model object
try:
ingredient_in_db = Ingredient.objects.get(name = form.cleaned_data.get('ingredientform'))
except:
ingredient_in_db = None
if ingredient_in_db:
obj.ingredient = ingredient_in_db
else:
new_ingredient = Ingredient.objects.create(name = form.cleaned_data.get('ingredientform'))
obj.ingredient = new_ingredient
obj.recipe = recipeobj
obj.save()
順便說一句,我認爲這種方法也可以讓我做一個自定義的.save(),因爲我採取formset中的每個表單並對其執行form.save(commit = False)。儘管如此,在我看來這很容易,因爲我需要訪問配方對象。
你有什麼需要自定義的保存()方法? – RotaJota 2012-04-25 19:22:44
我想要處理自定義成分字段,以便它可以檢索成分(如果成分已存在),或者創建一個新成分(如果它尚不存在)。那麼計劃是根據這些回報創建一個外鍵關係。 – bento 2012-04-25 19:29:39