【发布时间】:2021-09-18 15:22:27
【问题描述】:
我正在构建一个 BlogApp,并且我在 ManyToManyField 中创建了 Favorite Users 的功能。
这意味着user_1可以在一个字段中添加多个喜欢的用户。我构建了一个视图来添加用户。
但是,当我在从站点添加 favorite users 之前创建一个实例以从管理员存储 favorite users 并且然后如果我从站点添加最喜欢的用户,那么他们正在添加。但是如果 Admin 中还没有 request.user 的 FavouriteUsers 的实例,那么它就不会添加和创建新对象。
因此,用于存储request.user 的favorite users 的新对象未添加,如果对象已经存在,则它们正在添加。
models.py
class FavoriteUsers(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
favorite_users = models.ManyToManyField(User, related_name='favorite_users', blank=True)
views.py
def AddFavUsers(request,user_id):
obj = FavoriteUsers.objects.filter(user=request.user)
user = get_object_or_404(User,id=user_id)
for ob in obj:
ob.favorite_users.add(user)
ob.user.add(request.user)
ob.save()
return redirect('home')
Image of already created object
当对象已经存在时,手动创建然后favorite users 正在添加,但如果不是,则不会创建新对象。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
-
obj将返回一个FavoriteUsers对象,前提是该对象链接到request.user,换句话说,您正在添加之前已经添加的用户。 -
我也不太清楚你为什么首先使用
ManyToManyField,看起来Favorite关系应该是@之间的连接模型 987654338@ 和User。 -
如果你想创建一个
FavoriteUsers,你使用FavoriteUsers.objects.create(user=reque.ust) -
For first comment:- 那么我怎样才能用新的request.user创建一个新的object呢?For second comment:- 我应该使用profile而不是user吗? -
@WillemVanOnsem,当我使用
create时,它只创建对象但不添加用户,然后我又试了一次,然后它说:- 重复键值违反唯一约束“ auth_user_pkey" DETAIL: Key (id)=(16) already exists. 然后我用get_or_create然后它显示'tuple'对象没有属性'favorite_users'
标签: python django django-models django-views many-to-many