Ändern Sie pub_data des Fragenmodells der Umfrage-App in pub_date.
Erstellen Sie eine leere Migrationsdatei in der Befehlszeile unter Bezugnahme auf das offizielle Dokument.
$ python3 manage.py makemigration --empty [App Name]
Anschließend wird eine Migrationsdatei im Umfrageordner direkt unter der Anwendung erstellt.
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 = [
('[App Name]', '0001_initial'),
]
operations = [
]
Schreiben Sie dies wie folgt um.
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 = [
('[App Name]', '0001_initial'),
]
operations = [
migrations.RenameField(
model_name='question', #Modellname
old_name='pub_data', #Vorher ändern
new_name='pub_date' #Nach der veränderung
)
]
Wenn Sie das RenameField neu schreiben, können Sie Spalten und Indizes auf dieselbe Weise hinzufügen oder löschen. Weitere Informationen finden Sie unter Offizielle Dokumente.
Führen Sie abschließend den folgenden Befehl in der Befehlszeile aus, um die Änderungen zu übernehmen.
$ python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
Applying polls.0002_auto_20200128_0044... OK
Lassen Sie es uns auf der SQL-Seite überprüfen.
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)
Es ist seltsam: entspannt:
Ändern Sie Dateien wie 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
Warum ändert der Funktionsname den Spaltennamen RenameField anstelle von RenameColumn?
Wenn jemand einen anderen guten Weg kennt, lass es mich wissen.
Recommended Posts