modelcluster/models.py
def save(self, **kwargs):
        """
        Save the model and commit all child relations.
        """
        child_relation_names = [rel.get_accessor_name() for rel in get_all_child_relations(self)]
        child_m2m_field_names = [field.name for field in get_all_child_m2m_relations(self)]

        update_fields = kwargs.pop('update_fields', None)
        if update_fields is None:
            real_update_fields = None
            relations_to_commit = child_relation_names
            m2m_fields_to_commit = child_m2m_field_names
        else:
            real_update_fields = []
            relations_to_commit = []
            m2m_fields_to_commit = []
            for field in update_fields:
                if field in child_relation_names:
                    relations_to_commit.append(field)
                elif field in child_m2m_field_names:
                    m2m_fields_to_commit.append(field)
                else:
                    real_update_fields.append(field)

        super(ClusterableModel, self).save(update_fields=real_update_fields, **kwargs)

        for relation in relations_to_commit:
            getattr(self, relation).commit()

        for field in m2m_fields_to_commit:
            getattr(self, field).commit()
def save(self, **kwargs):
        child_relation_names = [rel.get_accessor_name() for rel in get_all_child_relations(self)]
        child_m2m_field_names = [field.name for field in get_all_child_m2m_relations(self)]

        update_fields = kwargs.pop('update_fields', None)
        if update_fields is None:
            real_update_fields = None
            relations_to_commit = child_relation_names
            m2m_fields_to_commit = child_m2m_field_names
        else:
            real_update_fields = []
            relations_to_commit = []
            m2m_fields_to_commit = []
            for field in update_fields:
                if field in child_relation_names:
                    relations_to_commit.append(field)
                elif field in child_m2m_field_names:
                    m2m_fields_to_commit.append(field)
                else:
                    real_update_fields.append(field)

        super(ClusterableModel, self).save(update_fields=real_update_fields, **kwargs)

        for relation in relations_to_commit:
            getattr(self, relation).commit()

        for field in m2m_fields_to_commit:
            getattr(self, field).commit()
def save ( self , * * kwargs ) : child_relation_names = [ rel . get_accessor_name ( ) for rel in get_all_child_relations ( self ) ] child_m2m_field_names = [ field . name for field in get_all_child_m2m_relations ( self ) ] update_fields = kwargs . pop ( 'update_fields' , None ) if update_fields is None : real_update_fields = None relations_to_commit = child_relation_names m2m_fields_to_commit = child_m2m_field_names else : real_update_fields = [ ] relations_to_commit = [ ] m2m_fields_to_commit = [ ] for field in update_fields : if field in child_relation_names : relations_to_commit . append ( field ) elif field in child_m2m_field_names : m2m_fields_to_commit . append ( field ) else : real_update_fields . append ( field ) super ( ClusterableModel , self ) . save ( update_fields = real_update_fields , * * kwargs ) for relation in relations_to_commit : getattr ( self , relation ) . commit ( ) for field in m2m_fields_to_commit : getattr ( self , field ) . commit ( )
Save the model and commit all child relations.
Save the model and commit all child relations .