我在包含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