Django:我有一个Profile模型,我希望配置文件详细信息页面的slug是用户名,存储在用户模型中

时间:2017-10-05 23:53:01

标签: django django-models

我正在创建一个网站,其中每个用户都有一个关联的Profile实例,因为我希望User模型只处理与身份验证相关的用户功能,而Profile模型则用于处理其他所有内容(例如用户上传的图像等)。 )Profile有一个User OneToOneField。但是,我希望能够使用url模式site / profile / [username] /访问每个配置文件的详细信息页面。如果没有在User和Profile模型中存储用户名,这是不可能的,因为Profile DetailView的slug_field必须是Profile的主键,用户名是User的字段。如果没有将用户名存储在两个不同的地方,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

不需要。你可以这样试试。

在urls.py

from .import views

url(r'^(?P<usernameslug>[-_\w]+)/detail/$',views.detailprofile)

假设模型

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    . . . .
    . . . .

观看

def detailprofile(request,usernameslug):
    profile=Profile.objects.get(user__username=usernameslug)