Adding fields to an already existing database for Django (version < 1.7)

后端 未结 3 568
执笔经年
执笔经年 2021-01-04 11:35

I\'m using Django ( < v1.7), with SQLite3 as the database engine.

I am trying to add a new field to an already existing model\'s class. This class already has dat

3条回答
  •  逝去的感伤
    2021-01-04 12:20

    This answer is still getting visibility but is outdated. Since 1.7 Django ships with a built-in migration system, written by the same author as South, and has deprecated syncdb though it will still work.

    You will simply need to run a few commands to automatically add new columns:

    python manage.py makemigrations  
    python manage.py migrate
    

    It will be useful to understand what's happening under the hood, but those are the basics. Please ask new questions to get answers on 1.7 and migrations if you are still reading this old post.


    For django < 1.7

    syncdb will not add any new columns. See http://docs.djangoproject.com/en/dev/ref/django-admin/#syncdb

    You will have to add them manually. For example,. replace <> with relevant info:

    python manage.py dbshell
    ALTER TABLE  ADD COLUMN  DEFAULT '';
    

    You can see what Django might have done to generate columns on a fresh syncdb by using:

    python manage.py sqlall app_name
    

    and copying and pasting ALTER TABLE statements from there.

    Otherwise, you can look into third-party apps like Django-South which are database migration tools.

提交回复
热议问题