簡體   English   中英

在Django中使用擴展用戶模型中的用戶名檢索用戶詳細信息

[英]Retrieving user details using username from extended User Model in Django

我正在嘗試使用用戶名測試從Django中擴展的用戶模型中檢索用戶的詳細信息。 但是我做不到。 這給了我錯誤:

以10為底的int()值無效的int()的ValueError:'test'

以下是我的代碼:

models.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

views.py

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')
               ....

現在簽名Auth():

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

我正在使用username檢索用戶詳細信息 signatureAuth()方法中的test 我的用戶以及DocchainUser模型中已經存在測試

您沒有擴展的用戶模型,而是具有與用戶一對一關系的單獨模型。 因此,為了通過用戶名查詢該模型,您需要遵循以下關系。

userModel = DocchainUser.objects.filter(docchainuser_name__username=username)

請注意,您在此處苦苦掙扎的原因之一是您的OneToOneField可能被錯誤命名。 關系與整個模型有關,而不與用戶名有關; 您應該將其docchainuser

(還請注意,您的if user.is_authenticated是沒有意義的;它只是檢查用戶是User的實例,而不是AnonymousUser的實例,您知道這是因為您只是從User模型中明確檢索了它。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM