繁体   English   中英

在django中过滤用户并添加到现有组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM