[英]Filter user in django and add to a existing group
我是Django的新手,并且一段时间以来都无法完成任务。 我已经在Django文档中搜索过,这里有一些问题,但是没有任何帮助。
这是我的看法:
def user_accept(request):
if request.method == 'POST':
username = AddUser.objects.filter(owner=request.user).get().user_request
group_name = Projects.objects.filter(user=request.user).get().group_url
group = Group.objects.get(name=group_name)
group.user_set.add(username)
delete_user = AddUser.objects.filter(user_request=username)
delete_user.delete()
这是我的模型:
class AddUser(models.Model):
owner = models.ForeignKey(User)
title = models.CharField(max_length=20, default='', blank=True)
user_request = models.CharField(max_length=30, default='')
answer = models.BooleanField(default=False)
AddUser模型用于用户请求访问特定项目。 因此,当用户请求项目时,数据将保存到AddUser模型。 用户字段设置为项目的“所有者”,因此我可以使用适当的所有者过滤每个项目。
如果所有者决定接受请求,那么将执行我的user_accept视图。 这是问题所在,当我尝试将用户名添加到组中时,出现以下错误:
invalid literal for int() with base 10: 'myusername'
我试图用int(username)来转换用户名,并试图获取用户名的user_id,但是似乎没有任何作用...我认为它有办法过滤我的对象,但我没有。
因此,非常感谢您抽出宝贵的时间,并祝您新年快乐!
您需要用户标识或用户对象本身,才能使用group.user_set.add
添加用户。
您可以从用户名中检索用户对象,前提是用户名是唯一的,然后添加以下内容:
user = User.objects.get(username=user_request)
group.user_set.add(user)
或更改您的AddUser
模型以通过OneToOne字段或ForeignKey代替用户名存储请求者的ID。
Django默认组不允许您向其中添加用户名。 您必须添加用户对象。 尝试
add_user_object = AddUser.objects.filter(owner=request.user).get()
group.user_set.add(add_user_object.owner)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.