python - Django ManyToMany 关系 - 检查是否存在?
问题描述
我目前正在学习 Django 并为此构建一个类似 twitter 的应用程序。
我在 Profile 模型中使用了 ManyToManyField 来反映关注者:
模型.py
class Profile(models.Model):
"""
Extension of User model to save additional information
"""
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
followers = models.ManyToManyField('self', related_name='Followers', blank=True, symmetrical=False)
follower_count = models.IntegerField(default=0)
following_count = models.IntegerField(default=0)
现在我正在尝试检查用户是否已经在关注另一个用户(打开个人资料时,我可以在那里显示正确的关注/取消关注按钮)
视图.py
def profile(request, username):
try:
user = User.objects.get(username=username)
user_profile = Profile.objects.get(user_id=user.id)
except ObjectDoesNotExist:
raise Http404("User does not exist")
is_following = True if user.id in Profile.followers.all() else False
return render(request, 'songapp/profile.html', {'user_profile': user_profile,
'user' : user,
'is_following': is_following})
问题在于
Profile.followers.all()
当我得到以下 AttributeError 时:
'ManyToManyDescriptor' object has no attribute 'all'
我已经使用了搜索功能并阅读了长达 8 岁的结果,但我没有找到或理解相应的答案。
非常感谢任何帮助
解决方案
感谢https://stackoverflow.com/users/4996863/charnel
我不得不再次尝试迁移,我真的错过了其中一个。跑manage.py makemigrations
,manage.py migrate
让我的模型工作。
推荐阅读
- python - 从 python 中找到 bash 可执行文件在 windows 上的位置
- python - 为什么我总是得到“服务器已拒绝客户端凭据。” 当我调用业务中心 api 时?
- python - 使用 faker 在 django 中填充模型
- javascript - JS Doc:如何将javascript es6类返回的对象定义为自定义类型?
- code-composer - 断点和探测点有什么区别?在代码作曲家工作室
- html - 如何使用 flexbox 将三列布局变成两列布局(调整选项卡大小时)?
- ios - 音频检测器可以在设备上工作,但不能在模拟器上工作......和准确性
- python - 在哪里可以找到 Twilio 的运营商查找返回的运营商字符串列表?
- angular - 如何改进:两个总和给定一个整数数组,返回两个数字的索引......使用角度
- c++ - 为什么在 BST 插入程序中使用 void 不起作用