[PYTHON] Passen Sie das Modell frei an. Ändern Sie den Variablennamen und den Feldnamen des Modells der Django / Django Rest Framework-App. ~ So spiegeln Sie die Bereitstellung in heroku Memo wider

Einführung

Djangos models.py ist im Vergleich zu anderen views.py mit der Datenbank verknüpft. Wenn Sie also einmal damit herumspielen, scheint es sehr problematisch zu sein, aber diesmal ist die Lösung festgelegt. Seien Sie also auf Ihre eigene Weise höflich Ich habe versucht, es in zu beschreiben. Wenn es schwer zu verstehen ist, tut es mir leid.

Überprüfungsumgebung

Python==3.6.1 Django==2.2.1 djangorestframework==3.11.0

Teil 1: So ändern Sie den Variablennamen des Modells

"Die Migration von models.py ist abgeschlossen! Oh, ich habe einen Tippfehler im Variablennamen gefunden ... Umschreiben und migrieren (` $ python manage.py makemigratios → $ python manage.py migrate```), Fehler ... was Selbst wenn ich es tue, ein Fehler ... Was soll ich tun? " Hier erfahren Sie, wie Sie dieses Problem lösen können.

1: Erstellen Sie eine Migrationsdatei

Geben Sie einen Befehl ein

$ python manage.py makemigrations --empty <App Name>

Migrations for '<App Name>':
  <App Name>/migrations/0012_auto_20200610_0000.py

2: In `` ` / migrations``` befindet sich eine leere Migrationsdatei

#0012_auto_20200610_0000.py


from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('<App Name>', '0011_auto_20200610_1111'),
    ]

    operations = [
    ]

3: Schreiben Sie eine Anweisung zum Umschreiben von Variablen in die Migrationsdatei

(1) Bei einer Änderung

#0012_auto_20200610_0000.py


from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('<App Name>', '0011_auto_20200610_1111'),
    ]

    operations = [
        migrations.RenameField(
            model_name='<Der Modellname, den Sie in der App ändern möchten>',
            old_name='image1Discription', #Beispiel: Variablenname, den Sie ändern möchten
            new_name='image1Description' #Beispiel: Variablenname nach Änderung
        )
    ]

(2) Bei zwei oder mehr Änderungen

#0012_auto_20200610_0000.py


from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('<App Name>', '0011_auto_20200610_1111'),
    ]

    operations = [
        migrations.RenameField(
            model_name='<Der Modellname, den Sie in der App ändern möchten>',
            old_name='image1Discription', #Beispiel: Variablenname, den Sie ändern möchten
            new_name='image1Description' #Beispiel: Variablenname nach Änderung
        ),
        migrations.RenameField(
            model_name='<Der Modellname, den Sie in der App ändern möchten>',
            old_name='image2Discription', #Beispiel: Variablenname, den Sie ändern möchten
            new_name='image2Description' #Beispiel: Variablenname nach Änderung
        )
    ]

4: Lokaler Migrationstest

Vergessen Sie nicht, die Datenbank von settings.py lokal anzugeben.

$ python manage.py migrate
Running migrations:
  Applying realestatedb.0012_auto_20200610_0000... OK

Sie können jetzt die lokale Datenbank ändern (z. B. postgre). Da models.py mit dem Verhalten anderer Apps als DB zusammenhängt, wird selbst wenn Sie es jetzt ausführen, ein 503-Fehler angezeigt. Wenn Sie jedoch in einem späteren Prozess Änderungen an models.py schreiben, wird der Fehler behoben.

5: Laden Sie auf Heroku hoch und machen Sie dasselbe aus der Ferne

Vergessen Sie nicht, die Datenbank von settings.py remote anzugeben.

$ git add .
$ git commit -m "db revise"
$ git push heroku master

(Warten)

$ heroku run python manage.py migrate
Running migrations:
  Applying realestatedb.0012_auto_20200610_0000... OK

Damit ist die Remote-DB vorerst in Ordnung.

6: Ändern Sie models.py, views.py serializers.py usw. und stellen Sie sie auf heroku bereit.

$ git add .
$ git commit -m "db revise"
$ git push heroku master

(Warten)

Wenn Sie den Vorgang überprüfen und er in Ordnung ist, sind Sie fertig. Nur weil Sie mit models.py herumgespielt haben, ist die Migration bereits abgeschlossen, sodass Sie nicht weiter migrieren müssen.

Teil 2: Ändern des Datentyps des Modellfelds

"Die Migration von models.py ist abgeschlossen! Oh, ich dachte, es wäre diese Variable Int, aber es ist Datetime, nicht Int ... Ich habe einen Fehler gemacht ... Rewrite und migrate (` $ python manage.py makemigratios → $ python In manage.py migrate```) ein Fehler ... egal was ich mache ... was soll ich machen? " Hier erfahren Sie, wie Sie dieses Problem lösen können.

1: Erstellen Sie eine Migrationsdatei

$ python manage.py makemigrations --empty realestatedb

Migrations for 'realestatedb':
  realestatedb/migrations/0012_auto_20200610_0000.py

2: In `` ` / migrations``` befindet sich eine leere Migrationsdatei

#0012_auto_20200610_0000.py


from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('<App Name>', '0011_auto_20200610_1111'),
    ]

    operations = [
    ]

3: Schreiben Sie eine Anweisung zum Umschreiben von Variablen in die Migrationsdatei

from django.db import migrations, models



 Bitte beachten Sie, dass ein Fehler auftritt, wenn Sie den Import von `` `models`` `nicht hinzufügen.


#### **`#0012_auto_20200610_0000.py`**
```py

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('<App Name>', '0011_auto_20200610_1111'),
    ]

    operations = [
        migrations.AlterField(
            model_name='<Der Modellname, den Sie in der App ändern möchten>',
            name='FeePayDate', #Beispiel: Variablenname, den Sie ändern möchten
            field=models.DateTimeField(blank=True, null=True), #Beispiel: Datentypname nach Änderung
        ),
    ]

4: Lokaler Migrationstest

Vergessen Sie nicht, die Datenbank von settings.py lokal anzugeben.

$ python manage.py migrate
Running migrations:
  Applying realestatedb.0012_auto_20200610_0000... OK

Sie können jetzt die lokale Datenbank ändern (z. B. postgre). Da models.py mit dem Verhalten anderer Apps als DB zusammenhängt, wird selbst wenn Sie es jetzt ausführen, ein 503-Fehler angezeigt. Wenn Sie jedoch in einem späteren Prozess Änderungen an models.py schreiben, wird der Fehler behoben.

5: Laden Sie auf Heroku hoch und machen Sie dasselbe aus der Ferne

Vergessen Sie nicht, die Datenbank von settings.py remote anzugeben.

$ git add .
$ git commit -m "db field revise"
$ git push heroku master

(Warten)

$ heroku run python manage.py migrate
Running migrations:
  Applying realestatedb.0012_auto_20200610_0000... OK

Damit ist die Remote-DB vorerst in Ordnung.

6: Ändern Sie models.py, views.py serializers.py usw. und stellen Sie sie auf heroku bereit.

$ git add .
$ git commit -m "db field revise"
$ git push heroku master

(Warten)

Wenn Sie den Vorgang überprüfen und er in Ordnung ist, sind Sie fertig. Nur weil Sie mit models.py herumgespielt haben, ist die Migration bereits abgeschlossen, sodass Sie nicht weiter migrieren müssen.

Referenzartikel

Benennen Sie Tabellenspalten in Django3 um https://qiita.com/holly0819/items/41f01096f59416b0d52b

Lernnotizen für die Migrationsfunktion im Django-Framework (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

Passen Sie das Modell frei an. Ändern Sie den Variablennamen und den Feldnamen des Modells der Django / Django Rest Framework-App. ~ So spiegeln Sie die Bereitstellung in heroku Memo wider
Heroku-Bereitstellung der ersten Django-App, von der Anfänger abhängig sind
Memo zur Bereitstellung von Django × Postgresql auf Docker für Heroku
So schreiben Sie eine benutzerdefinierte Validierung in Django REST Framework
So geben Sie die im Django-Modell enthaltenen Daten im JSON-Format zurück und ordnen sie der Broschüre zu
[Django] Korrigieren Sie die Pluralform des Modellnamens auf dem Verwaltungsbildschirm
Ich habe zusammengefasst, wie die Boot-Parameter von GRUB und GRUB2 geändert werden
So stellen Sie eine Django-App in nur 5 Minuten für Heroku bereit
Wie man mit verstümmelten Charakteren in json von Django REST Framework umgeht
So erhalten Sie den "Namen" eines Feldes, dessen Wert durch das Auswahlattribut im Django-Modell begrenzt ist
Verstehen Sie den Komfort des Django Rest Framework
So überprüfen Sie die Version von Django
Stellen Sie die Django-App in Heroku bereit [Teil 2]
Stellen Sie die Django-App in Heroku bereit [Teil 1]
Ändern Sie die Reihenfolge von PostgreSQL in Heroku
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
Ein Memo darüber, wie man das schwierige Problem der Erfassung von FX mit AI überwinden kann