質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

219閲覧

herokuのmysqlに migrate で、status_idのcolumを追加することができません。

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/01/06 10:30

djangoで下記のようなエラーが出ます。
registaration_post databaseを見ると、status_id はありませんでした。
モデルの書き方が原因で、heroku内で status_id colum が作成されないのでしょうか?
イメージ説明
イメージ説明

#frontpage.html

python

1{% extends "registration/base.html" %} 2{% block content %} 3 4 <br> 5 <br> 6 7 <h2 class="subtitle">add post</h2> 8 <br> 9 <form action="." method="post" enctype="multipart/form-data"> <!--これ忘れたた--> 10 {% csrf_token%} 11 {{form.as_p}} 12 <div class="field"> 13 <div class="control"> 14 <button class="button is-danger">submit</button> 15 </div> 16 </div> 17 </form> 18 <br> 19 <hr> 20 21 <br> 22 <br> 23 <br> 24 <br> 25 26 27 {% for post in posts %} 28 29 {% if post.status.pk != 4 %} 30 <!------------------post placed-------------> 31 <div class="post block"> 32 <small> 33 <strong> 34 35 <!-- 自分が人に作ったタスク これはどっちもUser クラスだから比較できる--> 36 {% if user.get_username == post.fromwho %} 37 {% if post.status.pk == 2 %} 38 <P class="border" style="padding:10px;">{{post.status}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 39 <a class="btn btn-outline-success" href="/aprove/{{post.id}}" role="button">aprove</a> 40 &nbsp;&nbsp; 41 <a class="btn btn-outline-danger" href="/deny/{{post.id}}" role="button">deny</a> 42 </P> 43 {% endif %} 44 {% endif %} 45 46 <!-- 誰かが自分に作ったタスク --> 47 {% if user.pk == post.towho.pk %} 48 {% if post.status.pk == 3 %} 49 <p class="border" style="padding:10px;">{{post.status}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50 <a class="btn btn-outline-primary" href="/request/{{post.id}}" role="button">request</a> 51 </p> 52 53 {% elif post.status.pk == 2 %} 54 <P class="border" style="padding:10px;">{{post.status}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55 <a class="btn btn-outline-secondary" href="/unsend/{{post.id}}" role="button">unsend</a> 56 </p> 57 58 {% elif post.status.pk == 1 %} 59 <P class="border" style="padding:10px;">{{post.status}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60 <a class="btn btn-outline-primary" href="/request/{{post.id}}" role="button">request</a> 61 </p> 62 {% endif %} 63 {% endif %} 64 65 </div> 66 </article> 67 68 69省略します

#models.py

python

1 2class Towho(models.Model): 3 name = models.CharField( 4 max_length=255, 5 blank=False, 6 null=False, 7 unique=True) 8 def __str__(self): 9 return self.name 10 11 12class Due(models.Model): 13 name=models.DateTimeField( 14 blank=False, 15 null=False, 16 auto_now=False) 17 def __str__(self): 18 return self.name 19 20 21class Status(models.Model): 22 status = models.CharField(verbose_name='状況', max_length=20, blank=True, null=True) 23 def __str__(self): 24 return self.status 25 26 27# from django.contrib.auth.models import User 28# Create your models here. 29class Post(models.Model): 30 title=models.CharField(max_length=255) 31 due= models.DateTimeField( 32 auto_now=False, 33 editable=True, 34 blank=False, 35 null=False) 36 fromwho = models.CharField(max_length=20) 37 38 towho = models.ForeignKey( 39 Towho, 40 on_delete=models.CASCADE) 41 42 body=models.TextField() 43 posted_date=models.DateTimeField(auto_now_add=True) 44 image = CloudinaryField('image', null=True, blank=True) 45 video = CloudinaryField('video', null=True, blank=True) 46 47 status = models.ForeignKey( 48 Status, 49 verbose_name='状況', on_delete=models.PROTECT, 50 default=3)#pkが3のassigned を初期値としてセット 51 52#-----------------------------comment--------------------------- 53class Comment(models.Model): 54 post = models.ForeignKey(Post, related_name="comments", on_delete=models.CASCADE) 55 name = models.CharField(max_length=255) 56 body= models.TextField() 57 posted_date=models.DateTimeField(auto_now_add=True) 58 image = CloudinaryField('image', null=True, blank=True) 59 video = CloudinaryField('video', null=True, blank=True) 60

#migrations/0001_initial.py

python

1 2# Generated by Django 4.1.4 on 2023-01-06 10:16 3 4import cloudinary.models 5from django.db import migrations, models 6import django.db.models.deletion 7 8 9class Migration(migrations.Migration): 10 11 initial = True 12 13 dependencies = [ 14 ] 15 16 operations = [ 17 migrations.CreateModel( 18 name='Due', 19 fields=[ 20 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 21 ('name', models.DateTimeField()), 22 ], 23 ), 24 migrations.CreateModel( 25 name='Status', 26 fields=[ 27 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 28 ('status', models.CharField(blank=True, max_length=20, null=True, verbose_name='状況')), 29 ], 30 ), 31 migrations.CreateModel( 32 name='Towho', 33 fields=[ 34 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 35 ('name', models.CharField(max_length=255, unique=True)), 36 ], 37 ), 38 migrations.CreateModel( 39 name='Post', 40 fields=[ 41 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 42 ('title', models.CharField(max_length=255)), 43 ('due', models.DateTimeField()), 44 ('fromwho', models.CharField(max_length=20)), 45 ('body', models.TextField()), 46 ('posted_date', models.DateTimeField(auto_now_add=True)), 47 ('image', cloudinary.models.CloudinaryField(blank=True, max_length=255, null=True, verbose_name='image')), 48 ('video', cloudinary.models.CloudinaryField(blank=True, max_length=255, null=True, verbose_name='video')), 49 ('status', models.ForeignKey(default=3, on_delete=django.db.models.deletion.PROTECT, to='registration.status', verbose_name='状況')), 50 ('towho', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='registration.towho')), 51 ], 52 ), 53 migrations.CreateModel( 54 name='Comment', 55 fields=[ 56 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 57 ('name', models.CharField(max_length=255)), 58 ('body', models.TextField()), 59 ('posted_date', models.DateTimeField(auto_now_add=True)), 60 ('image', cloudinary.models.CloudinaryField(blank=True, max_length=255, null=True, verbose_name='image')), 61 ('video', cloudinary.models.CloudinaryField(blank=True, max_length=255, null=True, verbose_name='video')), 62 ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='registration.post')), 63 ], 64 ), 65 ] 66

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

migrationの状態がガタガタになってそうなので、頑張って直接DBにカラムを追加するなどして、正しい状態と合わせてはいかがでしょう

投稿2023/01/06 10:34

yuma.inaura

総合スコア1453

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/01/06 10:59

ありがとうございます。 先ほどは、migrateファイルを手動で書く必要があるとのことでしたが、 migrate ファイルに問題はなくなったという認識で大丈夫でしょうか? DBがmigrate file と一致しないというのであれば、データベースを削除することで解決しますでしょうか? databaseは、herokuのJawsDBアドオンを使っているのですが、できればデータベースを変更することなく、 データベースの中身のみを初期化したいと考えています。 
yuma.inaura

2023/01/06 11:04

前と状態が変わってないなら問題は残り続けたままではないですか? どんな方法でも良いのでDBとマイグレーションの整合性さえ取れれば良いかと思います
yuma.inaura

2023/01/06 11:04

データベースを変更せずに削除するってどんな意味なんでしょう?
退会済みユーザー

退会済みユーザー

2023/01/06 11:11

新しいデータベースに移行することなく、既存のherokuと、プログラムと連携の取れている現在のデータベースを初期化したいという意味です。
退会済みユーザー

退会済みユーザー

2023/01/06 11:12

JawsDBのアドオンを解除して、新たにアドオンを追加すれば、新しいデータベースに接続されるのではと思いました。
退会済みユーザー

退会済みユーザー

2023/01/06 12:04

alter table registration_post modify column status_id bigint NOT NULL, add key(status_id); これでプログラムが実行できるようになりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問