Django:在另一个应用中访问用户资料数据
我现在正在开发一个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中的应用其实只是一个听起来很复杂的模块名称。通常,你的不同“应用”会共享同一个数据库,并且可以也应该导入其他应用的模型来完成工作。