I'm trying to figure out how to upload a file. I've got a model that
looks like:
class DataSet(models.Model):
file = models.FileField(upload_to='data/%Y/%m/%d')
and my view method is:
def create_data_set(request):
if request.method == 'POST':
form = DataSetForm(request.POST,
request.FILES)
if form.is_valid():
f = request.FILES['file']
data_set = DataSet()
data_set.save('foo', f)
return HttpResponseRedirect("/")
print "invalid"
else:
form = DataSetForm()
ctx = {'form': form}
ctx.update(csrf(request))
return render_to_response('chart/data_set.html', ctx)
with a form....
class DataSetForm(forms.Form):
file = forms.FileField()
When I execute this, I get a form containing a file picker (so far, so
good), but when I submit the form I get a mysterious error (below).
What am I doing wrong?
Environment:
Request Method: POST
Request URL:
http://localhost:8000/dataset/create
Django Version: 1.3
Python Version: 2.6.1
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'chart']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/Users/roy/lib/webchart/lib/python2.6/site-packages/Django-1.3-
py2.6.egg/django/core/handlers/base.py" in get_response
111. response = callback(request,
*callback_args, **callback_kwargs)
File "/Users/roy/WebChart/chart/views.py" in create_data_set
27. data_set.save('foo', f, False)
File "/Users/roy/lib/webchart/lib/python2.6/site-packages/Django-1.3-
py2.6.egg/django/db/models/base.py" in save
459. raise ValueError("Cannot force both insert and
updating in model saving.")
Exception Type: ValueError at /dataset/create
Exception Value: Cannot force both insert and updating in model
saving.