Django:在另一个应用中访问用户资料数据

0 投票
1 回答
2064 浏览
提问于 2025-04-17 23:14

我现在正在开发一个Django应用程序,想为它做一个小的推荐系统。我已经扩展了用户模型,并在一个叫做profile的应用中创建了用户资料,代码如下:

from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    skills = models.CharField(max_length=150)
    skillsNeeded = models.CharField(max_length=150)
    bio = models.CharField(max_length=300)
    industry = models.CharField(max_length=70)
    occupation = models.CharField(max_length=70)
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

不过,我现在在同一个Django项目里创建了一个叫做matches的独立应用,我想知道怎么才能从用户的资料中获取当前用户的数据,以及获取数据库中所有其他用户的列表。我使用的是PostgreSQL作为我的数据库管理系统,任何想法或帮助都非常感谢。我觉得我需要找出资料数据在数据库中的存储位置,并手动进行SQL查询。不过,我对Django还是比较陌生,这是我第一次使用Postgre作为数据库管理系统,而不是MySQL。

1 个回答

2

手动写SQL查询几乎没必要。听起来你只需要用数据模型的基本形式来进行查询就可以了。例如,当前用户在你的视图中可以通过request.user来获取,所以你可以这样获取他们的个人资料:

UserProfile.objects.get(user = request.user)

而获取所有用户则非常简单:

User.objects.all()

我觉得这里有一点误解。Django中的应用其实只是一个听起来很复杂的模块名称。通常,你的不同“应用”会共享同一个数据库,并且可以也应该导入其他应用的模型来完成工作。

撰写回答