Remplacez pub_data du modèle Question de l'application de sondage par pub_date.
Créez un fichier de migration vide sur la ligne de commande en vous référant au Document officiel.
$ python3 manage.py makemigration --empty [nom de l'application]
Ensuite, un fichier de migration sera créé dans le dossier polls directement sous l'application.
migrations/0002_auto_20200128_0044.py
# Generated by Django 3.0.2 on 2020-01-28 00:44
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('[nom de l'application]', '0001_initial'),
]
operations = [
]
Réécrivez ceci comme suit.
migrations/0002_auto_20200128_0044.py
# Generated by Django 3.0.2 on 2020-01-28 00:44
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('[nom de l'application]', '0001_initial'),
]
operations = [
migrations.RenameField(
model_name='question', #Nom du modèle
old_name='pub_data', #Changer avant
new_name='pub_date' #Après le changement
)
]
Si vous réécrivez le RenameField, vous pouvez ajouter ou supprimer des colonnes et des index de la même manière. Pour plus d'informations, rendez-vous sur Documents officiels.
Enfin, exécutez la commande suivante sur la ligne de commande pour appliquer les modifications.
$ python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
Applying polls.0002_auto_20200128_0044... OK
Vérifions cela du côté SQL.
mysql> DESC polls_question;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| question_text | varchar(200) | NO | | NULL | |
| pub_date | datetime(6) | NO | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
C'est étrange: détendu:
Modifiez des fichiers tels que model.py.
model.py
class Question(models.Model):
question_text = models.CharField(max_length=200)
# pub_data -> pub_date
pub_data = models.DateTimeField('data published')
def __str__(self):
return self.question_text
model.py
class Question(models.Model):
question_text = models.CharField(max_length=200)
# pub_data -> pub_date
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
Pourquoi le nom de la fonction qui change le nom de la colonne RenameField au lieu de RenameColumn?
Si quelqu'un connaît un autre bon moyen, faites-le moi savoir.
Recommended Posts