見出し画像

Django_インポートせずにモデルを指定する方法 #213日目

DjangoでForeignKeyを使ってモデルを指定する際、他ファイルからインポートせずにモデルを指定したい、という場面が出てきます。

これはモデルの数が膨大になってきたとき直面する場面で、愚直にimportするとそれだけでコード量が膨大になり、importの関係も複雑になり、コンフリクトが起きて上手く機能しないことが増えたりします。

そこでDjangoでは、モデルをimportなしで指定する方法が用意されています。

同じディレクトリの別ファイルで定義されているモデルは、以下のようにシングルクォーテーションで囲むだけで指定可能です。

[aaa.py]
class Company(models.Model):
    member = models.ForeignKey('Member', on.delete=models.CASCADE, related_name='company')

[bbb.py]
class Member(models.Model):
    name = models.CharField(max_length=255, blank=False)
    address = models.CharField(max_length=255, blank=False)

インポートする場合は以下のようになると思います。

[aaa.py]
from .bbb import Member
class Company(models.Model):
    member = models.ForeignKey(Member, on.delete=models.CASCADE, related_name='company')

[bbb.py]
class Member(models.Model):
    name = models.CharField(max_length=255, blank=False)
    address = models.CharField(max_length=255, blank=False)


実務では基本的にこの方法で記載されているようです。

ここまでお読みいただきありがとうございました!!


参考


この記事が気に入ったらサポートをしてみませんか?