• Anssi Kääriäinen's avatar
    Fixed #16649 -- Refactored save_base logic · 6b483495
    Anssi Kääriäinen yazdı
    Model.save() will use UPDATE - if not updated - INSERT instead of
    SELECT - if found UPDATE else INSERT. This should save a query when
    updating, but will cost a little when inserting model with PK set.
    
    Also fixed #17341 -- made sure .save() commits transactions only after
    the whole model has been saved. This wasn't the case in model
    inheritance situations.
    
    The save_base implementation was refactored into multiple methods.
    A typical chain for inherited save is:
    save_base()
        _save_parents(self)
            for each parent:
                _save_parents(parent)
                _save_table(parent)
        _save_table(self)
    6b483495
tests.py 27.7 KB