I'm using Django version 0.96-pre I checked out from SVN on the 12th.

I have two models: Photo and SsiStatus (see code below)
A SsiStatus object can have many photos.

I have written a view to handle updating the SsiStatus and every time I
click to save the update the caption of any existing photos gets
duplicated. The file name is not, it remains blank.

If I add a new photo, the photo is added but any existing photos get
their captions duplicated.

I edited some other data on the page (not photos) and I took a look at
"new_data" before and after the line
"manipulator.do_html2python(new_data)" and got this:

BEFORE
'photo.0.caption': ['SSI Diagram for ssi: 14-1024'],
'photo.0.image': ['ssi\\13-14-1024____.jpg']
'photo.1.caption': [''],
'photo.1.image': [''],

AFTER
'photo.0.id': [None],
'photo.0.caption': ['SSI Diagram for ssi: 14-1024'],
'photo.0.image': ['ssi\\13-14-1024____.jpg']}>
'photo.0.image_file': [],

'photo.1.id': [None],
'photo.1.caption': [''],
'photo.1.image': [''],
'photo.1.image_file': [],

It didn't seem to change the data significantly.

The problem seems to occur when the ssi status object gets saved.
I made a small edit clicked "edit and continue" and after the
post-save-redirect the "debug" tag on the update page revealed this...

'photo.0.id': 19L,
'photo.0.caption': 'SSI Diagram for ssi: 14-1024',
'photo.0.image': 'ssi\\13-14-1024____.jpg'},

'photo.1.id': 88L,
'photo.1.caption': 'SSI Diagram for ssi: 14-1024', <---- DUPLICATED
NAME
'photo.1.image': '', <---- NO IMAGE

'photo.2.id': None, <---- Next blank image
'photo.2.caption': '',
'photo.2.image': '',

Has anyone seen this behaviour before?

Any help would be greatly appreciated.

---------------------------------------------------------------
View
---------------------------------------------------------------
def ssi_status_update(request, ssi_id, ssistatus_id):
   # Get the ssi status in question from the database and create a
   # ChangeManipulator at the same time.
   try:
       manipulator = SsiStatus.ChangeManipulator(ssistatus_id)
   except SsiStatus.DoesNotExist:
       raise Http404

   if request.method == 'POST':
       new_data = request.POST.copy()

       if request.FILES:
           print request.FILES
           new_data.update(request.FILES)

       errors = manipulator.get_validation_errors(new_data)

       if not errors:

           print new_data

           manipulator.do_html2python(new_data)

           print new_data

           manipulator.save(new_data)
           # Do a post-after-redirect so that reload works, etc.
           if new_data.has_key('_continue'):
               return
HttpResponseRedirect('/ssi/ssi_status/update/%s/%s/' %
                                                                                
        (ssi_id, ssistatus_id))

           else:
               return HttpResponseRedirect('/ssi/%s/' % ssi_id)
   else:
       errors = {}
       # This makes sure the form accurately represents the fields of
the document.
       new_data = manipulator.flatten_data()

   form = forms.FormWrapper(manipulator, new_data, errors)
   return render_to_response('ssi/ssistatus_form.html',
                               {'form': form,

'object':SsiStatus.objects.get(pk=ssistatus_id)},

context_instance=RequestContext(request))



---------------------------------------------------------------
Models
---------------------------------------------------------------
class Photo(models.Model):

   ssi_status = models.ForeignKey(SsiStatus, edit_inline=True,
num_in_admin=2)
   caption = models.CharField(maxlength=100, core=True)
   image = models.ImageField(upload_to="ssi")

   def __str__(self):
           return self.caption

   def get_absolute_url(self):
           from idms.settings import MEDIA_URL
           return "%s/%s" % (MEDIA_URL, self.image.replace("\\","/"))

class SsiStatus(models.Model):
   '''
   This model is used to manage ssi status.
   It can have many SSis

   '''
   title = models.CharField(maxlength=100, unique=True)
   tail_number = models.ManyToManyField(Aircraft)
   justification = models.TextField()
   status = models.IntegerField(choices=SSI_STATUS_CHOICES)
   priority = models.IntegerField(choices=PRIORITY_CHOICES)


---------------------------------------------------------------
template
---------------------------------------------------------------
<fieldset style="width:750px"><legend>Photos</legend>
<table cellpadding="3px">

{% for photo in form.photo %}
<tr>
     <td><label for="id_.photo.{{ forloop.counter0
}}.caption">Caption:</label>
     {{ photo.caption }}
     </td>

     <td><label for="id_photo.{{ forloop.counter0 }}.image_file">File
name:</label>
        {{ photo.image_file }}
        {{photo.image}}
    </td>
</tr>
{% endfor %}


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to