2012-01-27 39 views
3

目前我使用的東西:textField1會,文字欄和:如何像一個初始值傳遞給的ImageField在Django形式

initialValues={ 
    'textField1':'value for text field 1', 
    'textField2':'value for text field 2', 
    'imageField': someModel.objects.get(id=someId).logo 
    } 

form = myForm(initial=initialValues) 

當我如上呼籲myForm會按預期的方式顯示在初始值imageField(與選項Currently:linkToImage,清除複選框和更改:)

但是,當我保存窗體,沒有什麼保存在imageField字段(檢查數據庫,我看到imageField字段爲空)。

我知道我錯過了這裏的東西,但我無法弄清楚什麼。有小費嗎?

+0

你有沒有在模型和'MEDIA_PATH指定['upload_to'(https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField.upload_to) '在你的設置? ([Here](http://www.nitinh.com/2009/02/django-example-filefield-and-imagefield/)是一個很好的例子)。 – 2012-01-28 20:42:24

回答

2

我通過分配

request.FILES['imageField']=someModel.objects.get(id=someId).logo 

就在我保存的形式解決了我的問題。 Yeey

0

創建時需要將數據傳遞給表單。

initialValues={ 
    'textField1':'value for text field 1', 
    'textField2':'value for text field 2', 
    'imageField': someModel.objects.get(id=someId).logo 
    } 
form = myForm(data=request.POST, initial=initialValues) 

如果你不這樣做了,我會建議使用class-based views。使用FormView,您可以輕鬆覆蓋get_initial_data()函數,指定您的值,然後讓視圖處理傳遞給表單以保存它的其他內容。如果你想保存模型(我認爲你是),請查看CreateView和UpdateView。

如果我確切地知道如何/何時初始化該表單,我可以更確定這個答案。

+0

這正是我正在做的。創建myForm時,我分配初始值...然後通過模板顯示錶單,這三個字段按預期顯示。我保存表格後,我檢查數據庫,我可以看到只有textField 1和2被保存,但imageField不是。 – marlboro 2012-01-28 19:54:26

相關問題