フォームが検証に失敗した場合に ImageField の詳細への編集が失われないようにする方法を考え出そうとしています。現在、フォームが検証に失敗した場合、またはページをリロードすると、参照した画像パスが失われ、デフォルトの「ファイルが選択されていません」が再表示されます。
多くの画像パスが参照されているシナリオでは、フォームの別の部分が検証に失敗したためにそれらがすべて失われた場合、煩わしさにつながります。
Django-ImageField でタグ付けされたすべての StackOverflow の質問を閲覧し、Django のドキュメントを調べましたが、選択したパスを保持する方法を明確に説明するものは見つかりませんでした。
この問題を示す非常に単純なプロジェクトを次に示します。
file_uploads プロジェクト
urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
user_profile アプリ
admin.py
from django.contrib import admin
from user_profile.models import Profile
class ProfileAdmin(admin.ModelAdmin):
list_display = ('name',)
admin.site.register(Profile, ProfileAdmin)
models.py
from django.db import models
class Profile(models.Model):
name = models.CharField(max_length=64,
verbose_name='Your Name')
number = models.DecimalField(max_digits=3,
decimal_places=1,
verbose_name='Your Number')
photo = models.ImageField(upload_to='avatar',
verbose_name='Your Picture')
def get_absolute_url(self):
return reverse(user_profile.views.profile, args=[str(self.id)])
これについて誰でもできるフィードバックをお待ちしております。