• 
      

    Fix creating models with multiple databases and with app label conflicts.

    Review Request #10598 — Created June 18, 2019 and submitted

    Information

    Django Evolution
    master

    Reviewers

    A few problems have been found when working with model creation.

    When using multiple databases, we'd sometimes try to create models in
    the database using the default database. This happened because we
    weren't passing along the explicit database we're working with, which
    is now a requirement for the function.

    There was also an issue on Django 1.6 with working with models across
    more than one app sharing the same legacy app label. When fetching
    models for an app using Django's get_models(), it wouldn't actually
    check that the models being returned are for the provided app, meaning
    that we'd get the same models back more than once, hitting conflicts
    when creating them. We now check this ourselves, making sure each
    model's module resides somewhere within the app.

    We also hit one other subtle issue where we were generating a list of
    new models incorrectly. This was only used for the signals, but broke
    some signal handlers out there. We now correctly turn this into a
    flat list of new models.

    Unit tests pass on Django 1.6 and 1.11.

    Tested against Review Board, which had the app conflict issue.

    Summary ID
    Fix creating models with multiple databases and with app label conflicts.
    A few problems have been found when working with model creation. When using multiple databases, we'd sometimes try to create models in the database using the default database. This happened because we weren't passing along the explicit database we're working with, which is now a requirement for the function. There was also an issue on Django 1.6 with working with models across more than one app sharing the same legacy app label. When fetching models for an app using Django's `get_models()`, it wouldn't actually check that the models being returned are for the provided app, meaning that we'd get the same models back more than once, hitting conflicts when creating them. We now check this ourselves, making sure each model's module resides somewhere within the app.
    566f00f28bff252728e8196089a0c9d0a4f10c25
    david
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to master (e1447bb)