2010-08-20 51 views
1

工作不增加額外的字段我有一個自定義屬性在我的Django的形式

class RecipeIngredient(models.Model): 
    recipe = models.ForeignKey(Recipe) 
    ingredient = models.ForeignKey(Ingredient) 
    serving_size = models.ForeignKey(ServingSize) 
    quantity = models.IntegerField() 
    order = models.IntegerField() 
    created = models.DateTimeField(auto_now_add = True) 
    updated = models.DateTimeField(auto_now = True) 

    def _get_json_data(self): 
     return u'%s %s' % (self.id, self.ingredient.name) 

    json_data = property(_get_json_data) 

我想在我的模板,以顯示屬性「json_data」的典範。

我有這樣一段代碼在我的形式

class RecipeIngredientForm(forms.ModelForm): 
     json_data = forms.CharField(widget=forms.HiddenInput()) 

     def __init__(self, *args, **kwargs): 
      super(RecipeIngredientForm, self).__init__(*args, **kwargs) 
      print('here') 
      if kwargs.has_key('instance'): 
       instance = kwargs['instance'] 
       print(instance) 
       self.initial['json_data'] = instance.json_data 

我在財產「json_data」知道數據是無效的,但我無法從這個屬性在我的模板看到的數據。

在我的意見,我有這樣的一段代碼

RecipeIngredientFormSet = inlineformset_factory(models.Recipe, models.RecipeIngredient, form=forms.RecipeIngredientForm, extra=0) 

recipe_id = int(id) 

objRecipe = models.Recipe.objects.get(id=recipe_id) 
recipe = forms.RecipeForm(instance=objRecipe) 

recipeIngredients = RecipeIngredientFormSet(instance = objRecipe) 

我想我的問題是如何從一個額外的模型字段中顯示的數據?

回答

-1

附加字段作爲初始數據的數據傳遞到形式

initial_data = [{'json_data': objRecipe.json_data}] 
recipeIngredients = RecipeIngredientFormSet(initial=initial_data, instance = objRecipe) 

正確使用的初始數據是指using initial data with formset

+0

但json_data從RecipeIngredient快到了,我不能用它這樣的。 ..我想不出一種方式來使用一個formset – iJK 2010-08-21 02:00:40

+0

我試着用你的代碼,看起來像一切工作正常。 對於任何現有的RecipeIngredient實例,json_data都會正確填充。 – Ashok 2010-08-21 04:48:13

+0

此問題與解答幫助 http://stackoverflow.com/questions/3535977/can-model-properties-be-displayed-in-a-template – iJK 2010-08-21 16:24:39