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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Django

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

1176閲覧

Djangoで別appから別appのモデルへ書き込む際のmodelの宣言について

sarasa_38765

総合スコア34

Django

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/06/30 02:27

編集2020/06/30 05:25

#別のappで以下のテーブルに書き込む必要があるのですが、このprice_data_rowの宣言の仕方がわかりません。modelで宣言しても No module named 'models', になってしまいます

処理を行うAPPのviews.py

python

1 2 from models import price_data_row 3 4 pdb = price_data_row( 5 trade_xls = write_id, 6 no = i_no, 7 hanbai_bi = i_hanbai_bi, 8 kotai_no = i_kotai_no, 9 cow_breeds = o_cow_breeds_id, 10 sex = o_sex_id, 11 kikaku = i_kikaku, 12 edaniku_jyuryo = i_edaniku_jyuryo, 13 edaniku_kakaku = i_edaniku_kakaku, 14 edaniku_kakaku_zei = i_edaniku_kakaku_zei, 15 hanbai_kakaku_zei = i_hanbai_kakaku_zei, 16 tochiku_cd = i_tochiku_cd, 17 tochiku_name = i_tochiku_name 18 ) 19 20 pdb.save()

書き込みたいprice_data_rowというappのmodels.py

python

1 2 3 4from django.db import models 5from django.utils import timezone 6from decimal import Decimal 7from datetime import date 8 9 10# 相対取引枝肉価格データ 別紙様式2 11class Data(models.Model): 12 #算定データ 13 trade_xls = models.ForeignKey('trade_xls.Data', verbose_name='算定データ', on_delete=models.CASCADE, related_name="Data.trade_xls+") #一緒に削除する 14 #NO 15 no = models.CharField(verbose_name='NO',max_length=16,null=True) 16 #販売日 17 hanbai_bi = models.DateField(verbose_name='販売日',default=date.today) 18 #個体識別番号 19 kotai_no = models.CharField(verbose_name='個体識別番号',max_length=16,null=True) 20 21 #品種 22 cow_breeds = models.ForeignKey('cow_breeds.Data', verbose_name='品種', on_delete=models.PROTECT,related_name="Data.cow_breeds+") #削除できない 23 #性別 24 sex = models.ForeignKey('sex.Data', verbose_name='品種', on_delete=models.PROTECT,related_name="Data.sex+") #削除できない 25 #規格 26 kikaku = models.CharField(verbose_name='規格',max_length=16,null=True) 27 28 #枝肉重量 29 edaniku_jyuryo = models.DecimalField(verbose_name='枝肉重量', max_digits=6, decimal_places=1,default=Decimal('0.0')) 30 #枝肉価格(税抜) 31 edaniku_kakaku = models.DecimalField(verbose_name='枝肉価格(税抜)', max_digits=10, decimal_places=0,default=Decimal('0')) 32 #枝肉価格(税込) 33 edaniku_kakaku_zei = models.DecimalField(verbose_name='枝肉価格(税込)', max_digits=10, decimal_places=0,default=Decimal('0')) 34 #販売価格 35 hanbai_kakaku_zei = models.DecimalField(verbose_name='販売価格(税込)', max_digits=10, decimal_places=0,default=Decimal('0')) 36 37 #入力_と畜先コード 38 tochiku_cd = models.CharField(verbose_name='と畜先コード',max_length=16,null=True) 39 #と畜先名称 40 tochiku_name = models.CharField(verbose_name='と畜先名称',max_length=64,null=True) 41 42 #登録日 43 created_at = models.DateTimeField(verbose_name='登録日',auto_now_add=True) 44 #更新日 45 updated_at = models.DateTimeField(verbose_name='更新日',auto_now=True) 46 47 def __str__(self): 48 return self.name

#御回答頂いた内容を元に調べましてモデルへの書き込みは終了しました

python

1from django.apps import apps 2data = apps.get_model('price_data_row', 'Data') 3 4 5data.trade_xls = write_id, 6data.no = i_no, 7data.hanbai_bi = i_hanbai_bi, 8data.kotai_no = i_kotai_no, 9data.cow_breeds = o_cow_breeds_id, 10data.sex = o_sex_id, 11data.kikaku = i_kikaku, 12data.edaniku_jyuryo = i_edaniku_jyuryo, 13data.edaniku_kakaku = i_edaniku_kakaku, 14data.edaniku_kakaku_zei = i_edaniku_kakaku_zei, 15data.hanbai_kakaku_zei = i_hanbai_kakaku_zei, 16data.tochiku_cd = i_tochiku_cd, 17data.tochiku_name = i_tochiku_name 18 19data.save()

#しかし今度は以下のエラーが出てしまいました

log

1save() missing 1 required positional argument: 'self',

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

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

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

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

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

guest

回答2

0

自己解決

すいません、Djangoの理解が浅いようでした。アプリ=テーブルのように作成してしまい、それがそもそもの間違いであることに気が付きました。今回のは一つのアプリケーション内で纏まる物でした。改めて作り直してエラーがあった書き込みも正常に処理できました。回答頂いた方ありがとうございました。他アプリケーションの参照はまた別の機会に致します

投稿2020/07/01 09:33

sarasa_38765

総合スコア34

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

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

0

price_data_rowアプリにDataモデルが宣言されている場合は下記です。

python

1from price_data_row.models import Data 2data = Data() 3data.trade_xls = write_id 4...

一般的に他のアプリのモデルを参照する場合は、from <app>.models import <model>です。

投稿2020/06/30 04:12

hasami

総合スコア1277

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

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

sarasa_38765

2020/06/30 04:47

回答ありがとうございます。頂いたように修正したのですが local variable 'Data' referenced before assignment, のエラーが出てしまいます。
hasami

2020/06/30 05:25

「ローカル変数`Data`が割り当てる前に参照されています」と報告されています。 エラーの解消方法はおいておいて、まず`data`と小文字にしてみてください。
sarasa_38765

2020/06/30 06:16

from price_data_row.models import dataにすると cannot import name 'data'になります。これはfrom price_data_row.models import Dataが正しいと思います
hasami

2020/06/30 07:13

from句ではありません。 ローカル変数です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問