繁体   English   中英

Django ValueError:字段 'id' 需要一个数字,但得到了 'myuser'

[英]Django ValueError: Field 'id' expected a number but got 'myuser'

我需要使用我的用户名来panel/profile/<username>地址。 所以我在models中所做的是:

class Customer(models.Model):
    user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=30, null=True)
    last_name = models.CharField(max_length=30, null=True)
    
    def __str__(self):
        return str(self.user)

urls.py我有这些路径:

urlpatterns = [
    path('panel', views.home, name='panel'),

    path('panel/register', views.registerPage, name='register'),
    path('panel/login', views.loginPage, name='login'),
    path('panel/logout', views.logoutPage, name='logout'),

    path('dashboard', views.userProfile, name='dashboard'),
    path('dashboard/settings/edit-profile', views.userSettings, name='settings'),

    path('panel/profile/<str:username>', views.profile, name='profile'),
]

这样就没有问题了:

>>> customer=Customer.objects.get(user_id=118)
>>> customer.user.username
'myuser'

但是在views.py中,我需要像这样获取用户名作为URL的一部分:

@login_required(login_url='login')
@allowed_users(allowed_roles=['admins'])
def profile(request, username):
    customer = Customer.objects.get(user=username)
    print(type(customer), customer)

但我有这个错误:

ValueError at /panel/profile/myuser
Field 'id' expected a number but got 'myuser'.

使用 span 关系获取Customer实例

@login_required(login_url='login')
@allowed_users(allowed_roles=['admins'])
def profile(request, username):
    customer = Customer.objects.get(user__username=username)
    print(type(customer), customer)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM