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

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

新規登録して質問してみよう
ただいま回答率
85.45%
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回答

550閲覧

Djangoでprimary key を追加したときに データベースが djangoに反映されません。 migrateファイルには反映されています。

alizona

総合スコア126

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/27 03:44

編集2023/01/27 03:52

Due 状況を Primary key クラスとして作成したのですが、 REGISTRATION アプリの中に Due Statuss が作成されません。
イメージ説明

そのため、値を作成することができません。

しかしデータベースの中には作成されています。
イメージ説明

ALTER table registration_post add duestatus_id BIGINT NOT NULL;
ALTER table registration_post add INDEX duestatus_id(duestatus_id);
で、mysqlに columnを作成し、primary key と連携させました。

一番下にデータベース構造のスクリーンショットを載せています。

エラーとしては、The database backend does not accept 0 as a value for AutoField. です。それは duestatus が設定できていないからだと思います。
ローカルでも同じ状態です。そのためローカルをmigrateして、gitにpush してheroku にpush することで解決することはできませんでした。

また、columnを作成しなおしたのですが解決しませんでした。

他にやったこととしては、post class ないでの duestatus クラスの記述をコメントアウトして、先に class duestatus(){ の定義のみを migrate させたのですがダメでした。

他には、python manage.py migrate --run-syncdb や、python manage.py migrate --fake を試しましたが変わらずでした。

申し訳ありませんが、アドバイスいただきたいです。

models.py

python

1 2 3 4class Status(models.Model): 5 status = models.CharField(verbose_name='状況', max_length=20, blank=True, null=True) 6 def __str__(self): 7 return self.status 8 9 10class PriceStatus(models.Model): 11 pricestatus = models.CharField(verbose_name='支払い状況', max_length=20, blank=True, null=True) 12 def __str__(self): 13 return self.pricestatus 14 15 16class DueStatus(models.Model): 17 id = models.AutoField(primary_key=True) 18 duestatus = models.CharField(default='set',verbose_name='Due状況', max_length=20, blank=True, null=True) 19 def __str__(self): 20 return self.duestatus 21 22 23#------------------------------------------------------------- 24 25 26# from django.contrib.auth.models import User 27# Create your models here. 28from django.utils import timezone 29 30class Post(models.Model): 31 title=models.CharField(max_length=255) 32 due= models.DateTimeField( 33 auto_now=False, 34 editable=True, 35 blank=False, 36 null=False) 37 fromwho = models.CharField(max_length=20) 38 39 towho = models.ForeignKey( 40 Towho, 41 on_delete=models.CASCADE, 42 default=8)#5をdefaultのnooneにする 43 44 body=models.TextField() 45 posted_date=models.DateTimeField(auto_now_add=True) 46 image = CloudinaryField('image', null=True, blank=True) 47 video = CloudinaryField('video', null=True, blank=True) 48 49 status = models.ForeignKey( 50 Status, 51 verbose_name='状況', on_delete=models.PROTECT, 52 default=5)#pkが3のassigned を初期値としてセット #5はopen 53 54 #この2つを追加 55 price=models.IntegerField(default=50) 56 57 pricestatus = models.ForeignKey( 58 PriceStatus, 59 verbose_name='支払い状況', on_delete= models.PROTECT, 60 default=2 61 ) 62 63 requestprice = models.IntegerField(default=0)#priceは一つでいい。リクエストのたびにnot nullで自動で最新がはいる。 responseは requestがないとできないから大丈夫 64 requestpricecomment = models.TextField(default='')#コメントを入力させ、 price と、 account name とう 色々 使って、 ログを作り、 request log を取得し、それに追加して、requestlogを更新 65 requestpricelog = models.TextField(default='') 66 requestedprice = models.IntegerField(default=0)#aprove , deny された時に、logに requestpriceを載せるとフォームに入れられた値になる。からrequestedが必要。 response... のrequest button 押した時にもこれはセットされるようにした。 67 68 69 duestatus = models.ForeignKey( 70 DueStatus, 71 verbose_name='Due状況', on_delete= models.PROTECT, 72 default=1 73 ) 74 75 requestdue = models.DateTimeField(default=timezone.now, 76 auto_now=False, 77 editable=True, 78 blank=False, 79 null=False) 80 requesteddue= models.DateTimeField(default=timezone.now, 81 auto_now=False, 82 editable=True, 83 blank=False, 84 null=False) 85 86 requestduecomment= models.TextField(default='') 87 requestduelog= models.TextField(default='') 88 89

migration file

python

1# Generated by Django 4.1.4 on 2023-01-27 03:29 2 3import cloudinary.models 4from django.db import migrations, models 5import django.db.models.deletion 6import django.utils.timezone 7 8 9class Migration(migrations.Migration): 10 11 dependencies = [ 12 ("registration", "0013_alter_comment_image"), 13 ] 14 15 operations = [ 16 migrations.CreateModel( 17 name="DueStatus", 18 fields=[ 19 ("id", models.AutoField(primary_key=True, serialize=False)), 20 ( 21 "duestatus", 22 models.CharField( 23 blank=True, 24 default="set", 25 max_length=20, 26 null=True, 27 verbose_name="Due状況", 28 ), 29 ), 30 ], 31 ), 32 migrations.CreateModel( 33 name="Price", 34 fields=[ 35 ( 36 "id", 37 models.BigAutoField( 38 auto_created=True, 39 primary_key=True, 40 serialize=False, 41 verbose_name="ID", 42 ), 43 ), 44 ("price", models.IntegerField(verbose_name="値段")), 45 ], 46 ), 47 migrations.CreateModel( 48 name="PriceStatus", 49 fields=[ 50 ( 51 "id", 52 models.BigAutoField( 53 auto_created=True, 54 primary_key=True, 55 serialize=False, 56 verbose_name="ID", 57 ), 58 ), 59 ( 60 "pricestatus", 61 models.CharField( 62 blank=True, max_length=20, null=True, verbose_name="支払い状況" 63 ), 64 ), 65 ], 66 ), 67 migrations.CreateModel( 68 name="Status", 69 fields=[ 70 ( 71 "id", 72 models.BigAutoField( 73 auto_created=True, 74 primary_key=True, 75 serialize=False, 76 verbose_name="ID", 77 ), 78 ), 79 ( 80 "status", 81 models.CharField( 82 blank=True, max_length=20, null=True, verbose_name="状況" 83 ), 84 ), 85 ], 86 ), 87 migrations.AddField( 88 model_name="post", 89 name="image", 90 field=cloudinary.models.CloudinaryField( 91 blank=True, max_length=255, null=True, verbose_name="image" 92 ), 93 ), 94 migrations.AddField( 95 model_name="post", name="price", field=models.IntegerField(default=50), 96 ), 97 migrations.AddField( 98 model_name="post", 99 name="requestdue", 100 field=models.DateTimeField(default=django.utils.timezone.now), 101 ), 102 migrations.AddField( 103 model_name="post", 104 name="requestduecomment", 105 field=models.TextField(default=""), 106 ), 107 migrations.AddField( 108 model_name="post", name="requestduelog", field=models.TextField(default=""), 109 ), 110 migrations.AddField( 111 model_name="post", 112 name="requesteddue", 113 field=models.DateTimeField(default=django.utils.timezone.now), 114 ), 115 migrations.AddField( 116 model_name="post", 117 name="requestedprice", 118 field=models.IntegerField(default=0), 119 ), 120 migrations.AddField( 121 model_name="post", 122 name="requestprice", 123 field=models.IntegerField(default=0), 124 ), 125 migrations.AddField( 126 model_name="post", 127 name="requestpricecomment", 128 field=models.TextField(default=""), 129 ), 130 migrations.AddField( 131 model_name="post", 132 name="requestpricelog", 133 field=models.TextField(default=""), 134 ), 135 migrations.AddField( 136 model_name="post", 137 name="video", 138 field=cloudinary.models.CloudinaryField( 139 blank=True, max_length=255, null=True, verbose_name="video" 140 ), 141 ), 142 migrations.AlterField( 143 model_name="post", name="fromwho", field=models.CharField(max_length=20), 144 ), 145 migrations.AlterField( 146 model_name="post", 147 name="towho", 148 field=models.ForeignKey( 149 default=8, 150 on_delete=django.db.models.deletion.CASCADE, 151 to="registration.towho", 152 ), 153 ), 154 migrations.DeleteModel(name="Fromwho",), 155 migrations.AddField( 156 model_name="post", 157 name="duestatus", 158 field=models.ForeignKey( 159 default=1, 160 on_delete=django.db.models.deletion.PROTECT, 161 to="registration.duestatus", 162 verbose_name="Due状況", 163 ), 164 ), 165 migrations.AddField( 166 model_name="post", 167 name="pricestatus", 168 field=models.ForeignKey( 169 default=2, 170 on_delete=django.db.models.deletion.PROTECT, 171 to="registration.pricestatus", 172 verbose_name="支払い状況", 173 ), 174 ), 175 migrations.AddField( 176 model_name="post", 177 name="status", 178 field=models.ForeignKey( 179 default=5, 180 on_delete=django.db.models.deletion.PROTECT, 181 to="registration.status", 182 verbose_name="状況", 183 ), 184 ), 185 ] 186

下の二枚は繋がっています。
イメージ説明
イメージ説明

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

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

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

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

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

yuma.inaura

2023/01/27 04:13

admin.py も編集する必要があるんじゃないでしょうか
alizona

2023/01/27 04:14

ほんとにありがとうございます。 今日は五時間。これに費やしてましたw
alizona

2023/01/27 04:20

The database backend does not accept 0 as a value for AutoField. のエラーになったので、これは解決にします。 ありがとうございました。
guest

回答1

0

自己解決

admin.py も編集する必要があるんじゃないでしょうか

ありがとうございました。

投稿2023/01/27 04:21

alizona

総合スコア126

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.45%

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

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

質問する

関連した質問