Author: russellm
Date: 2009-05-03 08:46:30 -0500 (Sun, 03 May 2009)
New Revision: 10670

Modified:
   django/branches/releases/1.0.X/django/contrib/admin/helpers.py
   
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/stacked.html
   
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/tabular.html
Log:
[1.0.X] Fixed #8903 -- Corrected rendering of admin inline formsets (tabular 
and stacked) when the inline model has a custom non-autofield primary key. 
Thanks to dgouldin for the patch.

Merge of r10666 from trunk.

Modified: django/branches/releases/1.0.X/django/contrib/admin/helpers.py
===================================================================
--- django/branches/releases/1.0.X/django/contrib/admin/helpers.py      
2009-05-03 13:45:26 UTC (rev 10669)
+++ django/branches/releases/1.0.X/django/contrib/admin/helpers.py      
2009-05-03 13:46:30 UTC (rev 10670)
@@ -132,14 +132,19 @@
             self.original.content_type_id = 
ContentType.objects.get_for_model(original).pk
         self.show_url = original and hasattr(original, 'get_absolute_url')
         super(InlineAdminForm, self).__init__(form, fieldsets, 
prepopulated_fields)
-    
+
     def __iter__(self):
         for name, options in self.fieldsets:
             yield InlineFieldset(self.formset, self.form, name, **options)
-    
+
+    def has_auto_field(self):
+        return self.form._meta.model._meta.has_auto_field
+
     def field_count(self):
         # tabular.html uses this function for colspan value.
-        num_of_fields = 1 # always has at least one field
+        num_of_fields = 0
+        if self.has_auto_field():
+            num_of_fields += 1
         num_of_fields += len(self.fieldsets[0][1]["fields"])
         if self.formset.can_order:
             num_of_fields += 1
@@ -149,7 +154,7 @@
 
     def pk_field(self):
         return AdminField(self.form, self.formset._pk_field.name, False)
-    
+
     def fk_field(self):
         fk = getattr(self.formset, "fk", None)
         if fk:
@@ -169,14 +174,14 @@
     def __init__(self, formset, *args, **kwargs):
         self.formset = formset
         super(InlineFieldset, self).__init__(*args, **kwargs)
-        
+
     def __iter__(self):
         fk = getattr(self.formset, "fk", None)
         for field in self.fields:
             if fk and fk.name == field:
                 continue
             yield Fieldline(self.form, field)
-            
+
 class AdminErrorList(forms.util.ErrorList):
     """
     Stores all errors for the form/formsets in an add/change stage view.

Modified: 
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/stacked.html
===================================================================
--- 
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/stacked.html
        2009-05-03 13:45:26 UTC (rev 10669)
+++ 
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/stacked.html
        2009-05-03 13:46:30 UTC (rev 10670)
@@ -17,7 +17,7 @@
   {% for fieldset in inline_admin_form %}
     {% include "admin/includes/fieldset.html" %}
   {% endfor %}
-  {{ inline_admin_form.pk_field.field }}
+  {% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field 
}}{% endif %}
   {{ inline_admin_form.fk_field.field }}
 </div>
 {% endfor %}

Modified: 
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/tabular.html
===================================================================
--- 
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/tabular.html
        2009-05-03 13:45:26 UTC (rev 10669)
+++ 
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/tabular.html
        2009-05-03 13:46:30 UTC (rev 10670)
@@ -14,7 +14,7 @@
      {% endfor %}
      {% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" 
%}</th>{% endif %}
      </tr></thead>
-   
+
      {% for inline_admin_form in inline_admin_formset %}
         {% if inline_admin_form.form.non_field_errors %}
         <tr><td colspan="{{ inline_admin_form.field_count }}">{{ 
inline_admin_form.form.non_field_errors }}</td></tr>
@@ -26,7 +26,8 @@
           {% if inline_admin_form.original %} {{ inline_admin_form.original 
}}{% endif %}
           {% if inline_admin_form.show_url %}<a href="../../../r/{{ 
inline_admin_form.original.content_type_id }}/{{ inline_admin_form.original.id 
}}/">{% trans "View on site" %}</a>{% endif %}
             </p>{% endif %}
-          {{ inline_admin_form.pk_field.field }} {{ 
inline_admin_form.fk_field.field }}
+          {% if inline_admin_form.has_auto_field %}{{ 
inline_admin_form.pk_field.field }}{% endif %}
+          {{ inline_admin_form.fk_field.field }}
           {% spaceless %}
           {% for fieldset in inline_admin_form %}
             {% for line in fieldset %}
@@ -48,22 +49,22 @@
             {% endfor %}
           {% endfor %}
         {% endfor %}
-                
+
         {% if inline_admin_formset.formset.can_delete %}
           <td class="delete">{% if inline_admin_form.original %}{{ 
inline_admin_form.deletion_field.field }}{% endif %}</td>
         {% endif %}
-        
+
         </tr>
 
      {% endfor %}
-   
+
    </table>
-   
+
 </fieldset>
   </div>
-  
+
   {# <ul class="tools"> #}
   {#   <li><a class="add" href="">Add another {{ 
inline_admin_formset.opts.verbose_name|title }}</a></li> #}
   {# </ul> #}
-  
+
 </div>


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

Reply via email to