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