Django ModelForm ImageField上载不适用于移动设备

Django ModelForm ImageField上载不适用于移动设备,django,mobile,django-forms,django-models,Django,Mobile,Django Forms,Django Models,我在包含ImageField的模型上使用django ModelForm。为了清晰起见,我在下面加入了一个通用版本,其中包含了一些细节。这个方案对我来说很好,我能够上传和显示模型中的图像,没有任何问题 在这种情况下,我的问题是从移动设备上传不起作用。我在iPhone4、iPad2和Android手机上进行了测试。没有任何设备显示任何错误,日志中也没有错误,但是图像无法上传 有人知道是什么导致了这个问题,或者这是ModelForms和ImageFields的已知问题吗?我真的很想继续使用Model

我在包含ImageField的模型上使用django ModelForm。为了清晰起见,我在下面加入了一个通用版本,其中包含了一些细节。这个方案对我来说很好,我能够上传和显示模型中的图像,没有任何问题

在这种情况下,我的问题是从移动设备上传不起作用。我在iPhone4、iPad2和Android手机上进行了测试。没有任何设备显示任何错误,日志中也没有错误,但是图像无法上传

有人知道是什么导致了这个问题,或者这是ModelForms和ImageFields的已知问题吗?我真的很想继续使用ModelForms,因为我有很多类似的模型,这使维护更容易,但我现在正在考虑自定义选项

到目前为止,谷歌还没有提供任何有用的信息。如果有人能指出正确的方向来解决这个问题,我们将不胜感激

我的模型如下所示(为了简洁起见,删除了一些字段):

我的ModelForm与一个自定义TextArea字段类似:

class MyForm(forms.ModelForm):
    notes = forms.CharField(widget=forms.Textarea, required=False)

    class Meta:
        model=MyModel
我使用类似的东西呈现模型表单(对象名称更改为通用等价物)

通过查看和,您的问题似乎来自jQuery Mobile

默认情况下,JQM将尝试通过ajax加载页面,以改善用户体验和转换

显然,当您在Django中发布到同一URL并希望手动处理它时,必须包含

data-ajax="false"
在您的情况下,这意味着将模板更改为:

<form id="myForm"
      action="{% url my_url %}?param_one={{ object.pk }}&param_two={{ anotherobject.pk }}"
      enctype="multipart/form-data"
      method="post"
      data-ajax="false"> <!-- change is here -->
    {% csrf_token %}
    {{ form.as_p }}
    <input id="saveSomething" class="nice small blue button" type="submit" value="Save" />
</form>

{%csrf_令牌%}
{{form.as_p}}
从:

这告诉框架重新加载整个页面以清除URL中的Ajax哈希


我自己没有尝试过,我只是从搜索中获得了信息。

您是否尝试过从
ModelForm
中删除
ImageField
,以确认是
ImageField
导致了问题?表单工作正常,只是图像未能上传,因此没有真正的帮助。我很想听听成功使用移动设备上传ModelForm ImageField的人的意见。只是确认图像是否通过PC、笔记本电脑上传,mac?你可以使用
Ripple
之类的工具来
Chrome
Firefox OS Simulator
之类的工具来
Firefox
firebug
一起使用,你可以看到控制台和对
django
的请愿书,以及这些工具帮助你调试
web应用程序的错误
mobiles
我自己还没有机会测试这个,但是你的解释听起来似乎有道理,而且没有其他人提供替代方案,所以我要给你奖金。感谢您的研究,一旦我有机会测试,我也会将其标记为答案。
@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()
data-ajax="false"
<form id="myForm"
      action="{% url my_url %}?param_one={{ object.pk }}&param_two={{ anotherobject.pk }}"
      enctype="multipart/form-data"
      method="post"
      data-ajax="false"> <!-- change is here -->
    {% csrf_token %}
    {{ form.as_p }}
    <input id="saveSomething" class="nice small blue button" type="submit" value="Save" />
</form>