Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中使用用户名从扩展用户模型检索用户详细信息_Python_Django_Django Models - Fatal编程技术网

Python 在Django中使用用户名从扩展用户模型检索用户详细信息

Python 在Django中使用用户名从扩展用户模型检索用户详细信息,python,django,django-models,Python,Django,Django Models,我试图从Django中的扩展用户模型中使用用户名test检索用户的详细信息。但是我做不到。这给了我一个错误: 以10为基数的int()的/ValueError处的文字无效:“test” 以下是我的代码: 型号.py class DocchainUser(models.Model): docchainuser_name = models.OneToOneField(User, on_delete = models.CASCADE, default='x') address = mo

我试图从Django中的扩展用户模型中使用用户名test检索用户的详细信息。但是我做不到。这给了我一个错误:

以10为基数的int()的/ValueError处的文字无效:“test”

以下是我的代码:

型号.py

class DocchainUser(models.Model):
    docchainuser_name = models.OneToOneField(User, on_delete = models.CASCADE, default='x')
    address = models.CharField(max_length=64,unique=True)   

    def __str__(self):
        return self.address
def my_users(request):
    if request.method == 'POST':    
        username = request.POST.get('username') 
        user = authenticate(username=username)
        if user:
            if user.is_authenticated:
                signBool = signatureAuth(username)
                if signBool == 'AUTHENTICATED':
                    login(request, user, backend=settings.AUTHENTICATION_BACKENDS[0])
                    return HttpResponseRedirect('/dashboard')
               ....
视图.py

class DocchainUser(models.Model):
    docchainuser_name = models.OneToOneField(User, on_delete = models.CASCADE, default='x')
    address = models.CharField(max_length=64,unique=True)   

    def __str__(self):
        return self.address
def my_users(request):
    if request.method == 'POST':    
        username = request.POST.get('username') 
        user = authenticate(username=username)
        if user:
            if user.is_authenticated:
                signBool = signatureAuth(username)
                if signBool == 'AUTHENTICATED':
                    login(request, user, backend=settings.AUTHENTICATION_BACKENDS[0])
                    return HttpResponseRedirect('/dashboard')
               ....
和签名()现在:

def signatureAuth(username):  
    userModel = DocchainUser.objects.filter(docchainuser_name=username)
    address = userModel.address
    print(address)
    ...

我正在使用signatureAuth()方法中的用户名:test检索用户详细信息测试已存在于my User和DocChain User模型中。

您没有扩展的用户模型,您有一个单独的模型,与用户有一对一的关系。因此,为了通过用户名查询该模型,您需要遵循以下关系

userModel = DocchainUser.objects.filter(docchainuser_name__username=username)
请注意,您在这里挣扎的原因之一是您的OneToOneField可能命名错误;关系是与整个模型,而不是用户名;你应该把它叫做
docchainuser


(还要注意,如果user.is\u authenticated,则您的
是没有意义的;这只是检查用户是否是user的实例,而不是匿名用户,您知道这是因为您刚刚从用户模型显式检索到它。)

哪行代码出现错误?您可以尝试:
userModel=user.objects.filter(username=username)
@MatthewGaiser它位于
userModel=DocchainUser.objects.filter(DocchainUser\u name=username)
行中。不管怎样,现在已经解决了。谢谢。@ToniSredanović
userModel=User.objects.filter(username=username)
在我尝试从DocchainUser模型检索用户时,从用户模型检索用户。不管怎样,现在已经解决了。谢谢你。它正在工作。我不知道你的用户名。它现在正在返回queryset。也谢谢你的建议。