Djangoでアプリ作成中の初学者です。
appを複数作成してその内容をまとめたappを作成して
それぞれとリレーションを組みたいのですが、
別のディレクトリにあるモデルとのリレーションの組み方が見つかりません。
ご教授いただけないでしょうか。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
なにが分かっていて、なにに困っているのかがわからず、なにを回答したらいいのかとなります。
今書いてあるコードが最低限要るんじゃないでしょうか。
2021/08/17 01:57
投稿に不慣れで申し訳ございません。
昨日この問題については解決いたしました。
次回からコードも貼り付けます。
回答1件
0
自己解決
解決しましたので書いておきます。
appを作成してTeamModelを作成↓
python
1team models.py 2 3import datetime 4from django.db import models 5from django.urls import path 6 7class TeamModel(models.Model): 8 team = models.CharField('チーム', max_length=50, null=True, blank=True, default='') 9 def __str__(self): 10 return str(self.team) 11 class Meta: 12 verbose_name_plural="チーム登録"
別のappを作成して、TeamModelをimportしてInsLedger1モデルで
python
1team = models.ForeignKey(TeamModel, on_delete=models.CASCADE)
これでリレーションは組めました。
詳しくはわかりませんが、どちらのappでも反映はされています。
python
1ins_ledger models.py 2 3import datetime 4from dateutil.relativedelta import relativedelta 5from django.db import models 6from dateutil.relativedelta import relativedelta 7from team.models import TeamModel 8from line.models import LineModel 9from mdevice.models import Device 10from process.models import Process 11from item.models import Item 12from product_num.models import Product_num 13from useapp.models import Useapp 14from spec_etc.models import Spec1, Spec2 15from django.utils.timezone import now 16 17 18 19MEASURING_INS_GROUP_CHOICES = ( 20 (1,'マイクロメータ'), 21 (2,'ノギス'), 22 (3,'内径'), 23 (4,'スナップメータ'), 24 (5,'ハイトゲージ'), 25 (6,'ダイヤルゲージ'), 26 (7,'ピンゲージ'), 27 (8,'リングゲージ'), 28 (9,'マスターゲージ'), 29 (10,'大型'), 30 (11,'その他'), 31 (12,'外部'), 32) 33 34CALIBRATION_CHOICES = ( 35 (1,'1年校正'), 36 (2,'2年校正'), 37 (5,'5年校正'), 38 (10,'10年校正'), 39) 40 41SPEC3_CHOICES = ( 42 (1, 'A'), 43 (2, 'D'), 44) 45 46class InsLedger1(models.Model): 47 measuring_ins_group = models.IntegerField(choices=MEASURING_INS_GROUP_CHOICES,default=1) 48 measuring_tool = models.ForeignKey(Device, on_delete=models.CASCADE) 49 ins_num = models.CharField(max_length=10) 50 calibration_type = models.IntegerField(choices=CALIBRATION_CHOICES) 51 calibration_date = models.DateTimeField(default=now)#datetime.datetime.now()) 52 next_calibration_date = models.DateTimeField() 53 serial_num = models.CharField(max_length=20, null=True, blank=True, default='') 54 product_num = models.ForeignKey(Product_num, on_delete=models.CASCADE) 55 team = models.ForeignKey(TeamModel, on_delete=models.CASCADE) 56 line = models.ForeignKey(LineModel, on_delete=models.CASCADE) 57 process = models.ForeignKey(Process, on_delete=models.CASCADE) 58 useapp = models.ForeignKey(Useapp, on_delete=models.CASCADE) 59 spec1 = models.ForeignKey(Spec1, on_delete=models.CASCADE) 60 spec2 = models.ForeignKey(Spec2, on_delete=models.CASCADE) 61 spec3 = models.IntegerField(choices=SPEC3_CHOICES) 62 item = models.ForeignKey(Item, on_delete=models.CASCADE) 63 64 def save(self, *args, **kwargs): 65 auto_now = kwargs.pop('next_calibration_date_auto_now', True) 66 if auto_now: 67 if self.calibration_type == CALIBRATION_CHOICES[0]: 68 calibration_span = 1 69 self.next_calibration_date = self.calibration_date + relativedelta(years=calibration_span) 70 super().save(*args, **kwargs) 71 72 def __str__(self): 73 return str(self.measuring_tool) 74 75 class Meta: 76 verbose_name = "m" 77コードTeam
投稿2021/08/20 01:44
総合スコア13
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。