[Django] Circular import Error
djangoでモデルを作成すると、アプリケーションは互いにインポートする必要がある場合に直面します.
この時点で実行すると、インポートできないエラーが発生し、ループインポートの解決を求められます.
解決する
"product.Product"—>
モデルからclassをインポートすると、importを使用することなく、文字列で他のアプリケーションのclassに接続できます.
この時点で実行すると、インポートできないエラーが発生し、ループインポートの解決を求められます.
解決する
djangoが提供する文字列メソッドを使用して、他のアプリケーションのモデルを参照します.
ex) ForeignKey, ManyToMany
from product import Product
# product/models.py
from django.db import models
class Product(models.Model):
comment = models.ManyToManyField(**"user.User"**, through="Comment", related_name="product")
class Comment(models.Model):
product = models.ForeignKey("Product", on_delete=models.CASCADE)
user = models.ForeignKey("User", on_delete=models.CASCADE)
# user/models.py
from django.db import models
class User(models.Model):
wishlist = models.ManyToManyField(**"product.Product"**, through="WishList", related_name="user")
class WishList(models.Model):
user = models.ForeignKey("User", on_delete=models.CASCADE)
product = models.ForeignKey("Product", on_delete=models.CASCADE)
幸いなことに,将来的には上記のコードのようにループインポートエラーを簡単に解決できる.モデルからclassをインポートすると、importを使用することなく、文字列で他のアプリケーションのclassに接続できます.
Reference
この問題について([Django] Circular import Error), 我々は、より多くの情報をここで見つけました https://velog.io/@tonic523/Django-Circular-import-Errorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol