我是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 :(得分:1)
您需要用户ID或用户对象本身才能添加group.user_set.add
的用户。
如果用户名是唯一的,则可以从用户名中检索用户对象,并添加:
user = User.objects.get(username=user_request)
group.user_set.add(user)
或者更改您的AddUser
模型以通过 OneToOne 字段或 ForeignKey 而不是用户名存储请求者的ID。
答案 1 :(得分:0)
Django默认组不允许您添加用户名。 您必须添加用户对象。 试试
add_user_object = AddUser.objects.filter(owner=request.user).get()
group.user_set.add(add_user_object.owner)