Le models.py de Django est lié à la base de données par rapport à d'autres views.py, donc une fois que vous vous en mêlez, cela semble être très gênant, mais cette fois la solution a été mise en place, alors soyez poli à votre manière J'ai essayé de le décrire. Si c'est difficile à comprendre, je suis désolé.
Python==3.6.1 Django==2.2.1 djangorestframework==3.11.0
"La migration de models.py est terminée! Oh, j'ai trouvé une faute de frappe dans le nom de la variable ... Réécrire et migrer (` $ python manage.py makemigratios → $ python manage.py migrate```) Même si je le fais, une erreur ... Que dois-je faire? " Voici comment résoudre ce problème.
Tapez une commande
$ python manage.py makemigrations --empty <nom de l'application>
Migrations for '<nom de l'application>':
<nom de l'application>/migrations/0012_auto_20200610_0000.py
<nom de l'application> / migrations```#0012_auto_20200610_0000.py
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('<nom de l'application>', '0011_auto_20200610_1111'),
]
operations = [
]
#0012_auto_20200610_0000.py
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('<nom de l'application>', '0011_auto_20200610_1111'),
]
operations = [
migrations.RenameField(
model_name='<Le nom du modèle que vous souhaitez modifier dans l'application>',
old_name='image1Discription', #Exemple: nom de variable que vous souhaitez modifier
new_name='image1Description' #Exemple: nom de variable après modification
)
]
#0012_auto_20200610_0000.py
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('<nom de l'application>', '0011_auto_20200610_1111'),
]
operations = [
migrations.RenameField(
model_name='<Le nom du modèle que vous souhaitez modifier dans l'application>',
old_name='image1Discription', #Exemple: nom de variable que vous souhaitez modifier
new_name='image1Description' #Exemple: nom de variable après modification
),
migrations.RenameField(
model_name='<Le nom du modèle que vous souhaitez modifier dans l'application>',
old_name='image2Discription', #Exemple: nom de variable que vous souhaitez modifier
new_name='image2Description' #Exemple: nom de variable après modification
)
]
N'oubliez pas de spécifier le DB de settings.py localement.
$ python manage.py migrate
Running migrations:
Applying realestatedb.0012_auto_20200610_0000... OK
Vous pouvez maintenant changer la base de données locale (comme postgre). Étant donné que models.py est lié au comportement d'applications autres que DB, même si vous l'exécutez maintenant, vous obtiendrez une erreur 503, mais si vous écrivez des modifications dans models.py dans un processus ultérieur, l'erreur sera corrigée.
N'oubliez pas de spécifier le DB de settings.py à distance.
$ git add .
$ git commit -m "db revise"
$ git push heroku master
(Attendre)
$ heroku run python manage.py migrate
Running migrations:
Applying realestatedb.0012_auto_20200610_0000... OK
Avec cela, le DB distant est OK pour le moment.
$ git add .
$ git commit -m "db revise"
$ git push heroku master
(Attendre)
Si vous vérifiez l'opération et qu'elle est OK, vous avez terminé. Tout simplement parce que vous avez joué avec models.py, la migration est déjà terminée, vous n'avez donc pas besoin de migrer davantage.
"La migration de models.py est terminée! Oh, je pensais que c'était cette variable Int, mais c'était Datetime, pas Int ... J'ai fait une erreur ... Réécrire et migrer (` $ python manage.py makemigratios → $ python Dans manage.py migrate```), une erreur ... quoi que je fasse ... que dois-je faire? " Voici comment résoudre ce problème.
$ python manage.py makemigrations --empty realestatedb
Migrations for 'realestatedb':
realestatedb/migrations/0012_auto_20200610_0000.py
<nom de l'application> / migrations```#0012_auto_20200610_0000.py
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('<nom de l'application>', '0011_auto_20200610_1111'),
]
operations = [
]
from django.db import migrations, models
Veuillez noter qu'une erreur se produira si vous n'ajoutez pas l'importation de `` `` models` '' à.
#### **`#0012_auto_20200610_0000.py`**
```py
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('<nom de l'application>', '0011_auto_20200610_1111'),
]
operations = [
migrations.AlterField(
model_name='<Le nom du modèle que vous souhaitez modifier dans l'application>',
name='FeePayDate', #Exemple: nom de variable que vous souhaitez modifier
field=models.DateTimeField(blank=True, null=True), #Exemple: nom du type de données après modification
),
]
N'oubliez pas de spécifier le DB de settings.py localement.
$ python manage.py migrate
Running migrations:
Applying realestatedb.0012_auto_20200610_0000... OK
Vous pouvez maintenant changer la base de données locale (comme postgre). Étant donné que models.py est lié au comportement d'applications autres que DB, même si vous l'exécutez maintenant, vous obtiendrez une erreur 503, mais si vous écrivez des modifications dans models.py dans un processus ultérieur, l'erreur sera corrigée.
N'oubliez pas de spécifier le DB de settings.py à distance.
$ git add .
$ git commit -m "db field revise"
$ git push heroku master
(Attendre)
$ heroku run python manage.py migrate
Running migrations:
Applying realestatedb.0012_auto_20200610_0000... OK
Avec cela, le DB distant est OK pour le moment.
$ git add .
$ git commit -m "db field revise"
$ git push heroku master
(Attendre)
Si vous vérifiez l'opération et qu'elle est OK, vous avez terminé. Tout simplement parce que vous avez joué avec models.py, la migration est déjà terminée, vous n'avez donc pas besoin de migrer davantage.
Renommer les colonnes de table dans Django3 https://qiita.com/holly0819/items/41f01096f59416b0d52b
Notes d'apprentissage pour la fonction migrations dans le framework Django (3) https://qiita.com/pumbaacave/items/8b6f8d96ddc7cc112827
Change column type with django migrations https://stackoverflow.com/questions/27385118/change-column-type-with-django-migrations
Recommended Posts