我在包含ImageField的模型上使用了django ModelForm。爲了清楚起見,我在下面列出了一個通用版本,並且刪除了一些細節。這個方案對我來說工作得很好,我可以毫無問題地上傳和顯示模型中的圖像。Django ModelForm ImageField上傳不適用於移動設備
我在這種情況下的問題是,上傳不適用於移動設備。我已經在Iphone 4,Ipad 2和Android手機上進行了測試。沒有任何設備顯示任何錯誤,並且日誌中沒有錯誤,但是圖像無法上傳。
是否有人知道可能會導致此問題,或者如果這是ModelForms和ImageFields的已知問題?我真的想繼續使用ModelForms,因爲我有很多類似的模型,它使維護更容易,但我現在正在查看自定義選項。
Google至今沒有提供有用的信息。如果任何人都可以指出正確的方向來解決這個問題,將不勝感激。
我的模型看起來像這樣(爲了簡潔起見移除了某些字段):
class myModel(models.Model):
notes = models.CharField(max_length=2000)
image = models.ImageField(upload_to="room_images/")
last_updated = models.DateTimeField(auto_now=True)
我的ModelForm看起來像這樣一個自定義文本區場:
class MyForm(forms.ModelForm):
notes = forms.CharField(widget=forms.Textarea, required=False)
class Meta:
model=MyModel
我渲染的東西在的ModelForm與此類似(對象名稱更改爲通用等價物)。
<form id="myForm" action="{% url my_url %}?param_one={{ object.pk }}¶m_two={{ anotherobject.pk }}" enctype="multipart/form-data" method="post">
{% csrf_token %}
{{ form.as_p }}
<input id="saveSomething" class="nice small blue button" type="submit" value="Save" />
</form>
我的看法是這樣的(同樣一些東西剝離出去清晰度):
@login_required
def object_edit(request):
object_id = request.GET.get('param_one', None)
object2_id = request.GET.get('param_two', None)
if object_id:
object = get_object_or_404(myModel, pk=object_id)
if obejct.userprofile.user != request.user:
return HttpResponseForbidden()
if object_id and object2_id != 'None':
other_object = get_object_or_404(OtherModel, pk=object_id)
else:
other_object = OtherModel(object=object)
if request.POST:
form = myForm(request.POST, request.FILES, instance=other_object)
if form.is_valid():
form.save()
您是否嘗試從'ModelForm'中刪除'ImageField'來確認它是導致問題的'ImageField'? –
表單工作正常,它只是上傳失敗的圖片,所以不會真正起到幫助作用。 – CIGuy
我很想聽聽已成功使用ModelForm ImageField上傳移動設備的人。 – CIGuy