Django

Code

Show
Ignore:
Timestamp:
08/05/08 12:15:33 (5 months ago)
Author:
jbronn
Message:

gis: Merged revisions 7981-8001,8003-8011,8013-8033,8035-8036,8038-8039,8041-8063,8065-8076,8078-8139,8141-8154,8156-8214 via svnmerge from trunk.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/gis

    • Property svnmerge-integrated changed from /django/trunk:1-7978 to /django/trunk:1-8214
  • django/branches/gis/django/forms/models.py

    r7979 r8215  
    99from django.utils.encoding import smart_unicode 
    1010from django.utils.datastructures import SortedDict 
    11 from django.core.exceptions import ImproperlyConfigured 
    1211 
    1312from util import ValidationError, ErrorList 
     
    261260        if initial is not None: 
    262261            object_data.update(initial) 
    263         BaseForm.__init__(self, data, files, auto_id, prefix, object_data, 
    264                           error_class, label_suffix, empty_permitted) 
     262        super(BaseModelForm, self).__init__(data, files, auto_id, prefix, object_data, 
     263                                            error_class, label_suffix, empty_permitted) 
    265264 
    266265    def save(self, commit=True): 
     
    307306        self.queryset = queryset 
    308307        defaults = {'data': data, 'files': files, 'auto_id': auto_id, 'prefix': prefix} 
    309         if self._max_form_count > 0: 
    310             qs = self.get_queryset()[:self._max_form_count
     308        if self.max_num > 0: 
     309            qs = self.get_queryset()[:self.max_num
    311310        else: 
    312311            qs = self.get_queryset() 
     
    380379    def add_fields(self, form, index): 
    381380        """Add a hidden field for the object's primary key.""" 
    382         self._pk_field_name = self.model._meta.pk.attname 
    383         form.fields[self._pk_field_name] = IntegerField(required=False, widget=HiddenInput) 
     381        if self.model._meta.has_auto_field: 
     382            self._pk_field_name = self.model._meta.pk.attname 
     383            form.fields[self._pk_field_name] = IntegerField(required=False, widget=HiddenInput) 
    384384        super(BaseModelFormSet, self).add_fields(form, index) 
    385385 
     
    403403class BaseInlineFormset(BaseModelFormSet): 
    404404    """A formset for child objects related to a parent.""" 
    405     def __init__(self, data=None, files=None, instance=None, save_as_new=False): 
     405    def __init__(self, data=None, files=None, instance=None, 
     406                 save_as_new=False, prefix=None): 
    406407        from django.db.models.fields.related import RelatedObject 
    407408        self.instance = instance 
     
    409410        # is there a better way to get the object descriptor? 
    410411        self.rel_name = RelatedObject(self.fk.rel.to, self.model, self.fk).get_accessor_name() 
    411         super(BaseInlineFormset, self).__init__(data, files, prefix=self.rel_name) 
     412        super(BaseInlineFormset, self).__init__(data, files, prefix=prefix or self.rel_name) 
    412413     
    413414    def _construct_forms(self): 
     
    442443        if len(fks_to_parent) == 1: 
    443444            fk = fks_to_parent[0] 
    444             if not isinstance(fk, ForeignKey) or fk.rel.to != parent_model: 
     445            if not isinstance(fk, ForeignKey) or \ 
     446                    (fk.rel.to != parent_model and  
     447                     fk.rel.to not in parent_model._meta.parents.keys()): 
    445448                raise Exception("fk_name '%s' is not a ForeignKey to %s" % (fk_name, parent_model)) 
    446449        elif len(fks_to_parent) == 0: 
     
    448451    else: 
    449452        # Try to discover what the ForeignKey from model to parent_model is 
    450         fks_to_parent = [f for f in opts.fields if isinstance(f, ForeignKey) and f.rel.to == parent_model] 
     453        fks_to_parent = [ 
     454            f for f in opts.fields  
     455            if isinstance(f, ForeignKey)  
     456            and (f.rel.to == parent_model  
     457                or f.rel.to in parent_model._meta.parents.keys()) 
     458        ] 
    451459        if len(fks_to_parent) == 1: 
    452460            fk = fks_to_parent[0]