🖥

#django って別々のアプリケーションのモデル同士でもリレーション・アソシエーションを設定できるの? -> できるっぽい

2019/05/15に公開

できるっぽい。

./user/models.py

カスタムモデルなのは特に意味なし。

from django.db import models

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

./blog/models.py

from django.db import models
from user.models import User

class Blog(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blogs')


shell

In [1]: u = User.objects.create(username="yumainaura")

In [2]: Blog.objects.create(user_id=u.id)
Out[2]: <Blog: Blog object (3)>

In [3]: u.blogs
Out[3]: <django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager at 0x11197fc50>

NOTE

こちらの記事を読んでどうなんだろう?と思い確認。

アプリケーションを独立させると、他プロジェクトでの再利用性と、アプリケーション単位でダンプファイル操作が可能になるメリットがあります。

「users」はcookiecutter-djangoでも使われている名前です。こちらで統一するのがよいと思います。
参考:cookiecutter-djangoを使ってみた

Django ユーザー カスタマイズ方法 - Qiita

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/1846

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-05-15

Discussion