我有一個自定義用戶模型:
# accounts > models.py > ...
class MyUser(AbstractUser):
[...]
fallowing_tags = models.ManyToManyField('posts.tag', blank=True)
我想過濾掉所有使用特定標簽的用戶:
from accounts.models import MyUser as User
# ---- or -----
from django.contrib.auth import get_user_model
User = get_user_model()
class Tag(models.Model):
name = models.SlugField(max_length=50, unique=True)
@property
def fallowers(self):
return User.objects.filter(fallowing_tags=self)
但是程式給出了一個錯誤:
File "~/path/to/blog/accounts/models.py", line 13, in <module>
from posts.models import Tag, Post
File "~/path/to/blog/posts/models.py", line 3, in <module>
from accounts.models import MyUser as User
ImportError: cannot import name 'MyUser' from partially initialized module 'accounts.models' (most likely due to a circular import) (~/path/to/blog/accounts/models.py)
uj5u.com熱心網友回復:
Django 會自動添加一個反向的關系,所以不需要添加一個followers,你可以查詢:
mytag.myuser_set.all()
如果要更改名稱,可以設定related_name=…引數 [Django-doc],例如:
class MyUser(AbstractUser):
# …
fallowing_tags = models.ManyToManyField(
'posts.tag',
blank=True,
related_name='users'
)
然后你因此查詢:
mytag.users.all()
uj5u.com熱心網友回復:
是的ImportError,我認為,是因為這條線from accounts.models import MyUser as User。它可能與 .django 的內置User模型相沖突django.contrib.auth。嘗試將其更改為另一個名稱。
好吧,我想你也可以簡單地使用Myuser.
嘗試:
from accounts.models import MyUser
或者
from accounts.models import MyUser as anyAnotherName
Note:請不要給出任何可能與 django 庫沖突的名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/482989.html
