[PYTHON] Benennen Sie Tabellenspalten in Django3 um

So benennen Sie Tabellenspalten in Django3 um

Ändern Sie pub_data des Fragenmodells der Umfrage-App in pub_date.

Umgebung

Weise

Erstellen Sie eine leere Migrationsdatei

Erstellen Sie eine leere Migrationsdatei in der Befehlszeile unter Bezugnahme auf das offizielle Dokument.

$ python3 manage.py makemigration --empty [App Name]

Migrationsdatei bearbeiten

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.

Migration anwenden

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:

Django Side Fix

Ändern Sie Dateien wie model.py.

Vorher ändern

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

Nach der veränderung

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

Ende

Warum ändert der Funktionsname den Spaltennamen RenameField anstelle von RenameColumn?

Wenn jemand einen anderen guten Weg kennt, lass es mich wissen.

Recommended Posts

Benennen Sie Tabellenspalten in Django3 um
Ausgabe der Tabellenstruktur in Django
Modell in Django
Django-Tabellenerstellung
Form in Django
Django Python Verschiebungstabelle
Modelländerungen in Django
Tabellendefinition in SQL Alchemy
[Django] Benennen Sie das Projekt um
[Django] Tabelle abschneiden (alle Tabellendaten löschen)
Leistungsoptimierung in Django 3.xx.
PHP var_dump-like in Django-Vorlage
Behandeln Sie Konstanten in Django-Vorlagen
Implementieren Sie die Follow-Funktion in Django
Ich habe einen Befehl zum Generieren eines Kommentars für eine Tabelle in Django eingegeben
(Hinweis) Django in Vagrant-Umgebung
Benennen Sie eine vorhandene Django-Anwendung um
Tauschen Sie Spalten in Pandas-Datenrahmen aus
Zeigen Sie Django ManyToManyField in der Vorlage
Laden Sie die Django-Shell mit ipython neu
Implementieren Sie einen tabellengesteuerten Test in Java
Legen Sie Platzhalter in Eingabefeldern in Django fest
Fügen Sie in Django dynamisch Formularfelder hinzu
Fehler im Zusammenhang mit Memcached in Django
Implementierung der Login-Funktion in Django
Registrieren Sie die Django-Anwendung im Projekt
Schreiben Sie externe Schlüsseleinschränkungen in Django
Wie man CSS in Django reflektiert
Wechseln Sie die in Django 1.9 angezeigte Sprache
Stellen Sie Django in 3 Minuten mit Docker-Compose bereit
Pin factory_boy Startwert in Django
GraphQL-API mit graphene_django in Django
Implementierung der Like-Schaltfläche in Django + Ajax
Holen Sie sich die Abfragezeichenfolge (Abfragezeichenfolge) mit Django
Erstellen Sie mit Django einen LINE-Bot
Es wurde eine Funktion hinzugefügt, um gewünschte Verschiebungen in der Django-Verschiebungstabelle zu registrieren