Storing likes and follows informations in different models gives me error: most likely due to a circular import
Storing likes and follows informations in different models gives me error: most likely due to a circular import
我有两个模型:Product
和 User
class Product(models.Model):
#here are information fields about Product
likes = models.ManyToManyField(
User, related_name="product_likes", blank=True)
object = models.Manager()
productobjects = ProductObjects()
def __str__(self):
return self.name
class User(AbstractBaseUser, PermissionsMixin):
#here are information fields about User
followed = models.ManyToManyField(
Product, related_name="followed_products", blank=True)
objects = CustomAccountManager()
object = models.Manager()
def __str__(self):
return self.email
在 Product
内,我需要有一个 likes
归档的 ManyToMany,哪个商店的用户喜欢该产品。在 User
中,我需要 followed
字段 ManyToMany 来存储用户关注的产品。
我有一个错误:cannot import name 'Product' from partially initialized module 'product.models' (most likely due to a circular import)
。我该如何解决?或者我可以用不同的方式来做吗?
我认为问题是在 product.models
中我导入:from users.models import User
而在 users.models
中我导入:from product.models import Product
.
(我正在使用 likes
归档只是为了获取喜欢的数量,但是从 followed
我需要获取指定用户关注的所有产品以及有关它们的信息)
您的 Product
模型需要导入 User
模型,反之亦然。结果,导入陷入了无限循环。
然而,您可以使用字符串文字来指定您的 ManyToManyField
指向的模型。例如:
# <b>no</b> import of the models module where you define User
class Product(models.Model):
#here are information fields about Product
likes = models.ManyToManyField(
<strong>'<em>app_name</em>.User'</strong>, related_name="product_likes", blank=True
)
# ⋮
此处 app_name
是您在其中定义(自定义)用户模型的应用的名称。
既然是(可能)用户模型,你在这里可以使用AUTH_USER_MODEL
setting [Django-doc]:
# <b>no</b> import of the models module where you define User
from django.conf import settings
class Product(models.Model):
#here are information fields about Product
likes = models.ManyToManyField(
<strong>settings.AUTH_USER_MODEL</strong>, related_name="product_likes", blank=True
)
# ⋮
我有两个模型:Product
和 User
class Product(models.Model):
#here are information fields about Product
likes = models.ManyToManyField(
User, related_name="product_likes", blank=True)
object = models.Manager()
productobjects = ProductObjects()
def __str__(self):
return self.name
class User(AbstractBaseUser, PermissionsMixin):
#here are information fields about User
followed = models.ManyToManyField(
Product, related_name="followed_products", blank=True)
objects = CustomAccountManager()
object = models.Manager()
def __str__(self):
return self.email
在 Product
内,我需要有一个 likes
归档的 ManyToMany,哪个商店的用户喜欢该产品。在 User
中,我需要 followed
字段 ManyToMany 来存储用户关注的产品。
我有一个错误:cannot import name 'Product' from partially initialized module 'product.models' (most likely due to a circular import)
。我该如何解决?或者我可以用不同的方式来做吗?
我认为问题是在 product.models
中我导入:from users.models import User
而在 users.models
中我导入:from product.models import Product
.
(我正在使用 likes
归档只是为了获取喜欢的数量,但是从 followed
我需要获取指定用户关注的所有产品以及有关它们的信息)
您的 Product
模型需要导入 User
模型,反之亦然。结果,导入陷入了无限循环。
然而,您可以使用字符串文字来指定您的 ManyToManyField
指向的模型。例如:
# <b>no</b> import of the models module where you define User
class Product(models.Model):
#here are information fields about Product
likes = models.ManyToManyField(
<strong>'<em>app_name</em>.User'</strong>, related_name="product_likes", blank=True
)
# ⋮
此处 app_name
是您在其中定义(自定义)用户模型的应用的名称。
既然是(可能)用户模型,你在这里可以使用AUTH_USER_MODEL
setting [Django-doc]:
# <b>no</b> import of the models module where you define User
from django.conf import settings
class Product(models.Model):
#here are information fields about Product
likes = models.ManyToManyField(
<strong>settings.AUTH_USER_MODEL</strong>, related_name="product_likes", blank=True
)
# ⋮