2016-12-30 20 views
0

我是Django新手,现在有一段时间没有完成任务。我在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(用户名),并试图获取用户名的USER_ID但没有似乎工作...我认为它有一些事情要做,我如何过滤我的对象,但我不明白。

非常感谢您的时间,祝您新年快乐!

+0

什么类型的字段是user_set在组表中? –

回答

1

您需要用户标识或用户对象本身才能添加group.user_set.add的用户。

您可以检索用户名的用户对象,提供用户名是独一无二的,补充说:

user = User.objects.get(username=user_request) 
group.user_set.add(user) 

或更改AddUser模型通过OneToOne场或ForeignKey的存储请求者的ID而不是用户名。

+0

嗨!有效!!谢谢你,我太愚蠢了,从来没有想过......非常感谢! – MB95

0

Django默认组不允许您添加用户名。 您必须添加用户对象。 尝试

add_user_object = AddUser.objects.filter(owner=request.user).get() 
group.user_set.add(add_user_object.owner)