如何根据 django ORM 中的父 table 字段获取对象?

how to get an object according to parent table field in django ORM?

我有一个名为 table 的配置文件,代码如下:

class Profile(models.Model):
    user = models.OneToOneField('auth_user', 
           related_name='profile', verbose_name='profile', on_delete=models.CASCADE)
    name = models.CharField(max_length=30, verbose_name='name')
    family = models.CharField(max_length=50, verbose_name='family')

而用户 table 如下所示:

class User(models.Model):
    id = models.IntegerField(primary_key=True)
    username = models.CharField(max_lenght=255)
    password = models.CharField(max_lenght=255)

我想通过此功能获取用户名的配置文件:

def get_profile(request, username):
    # some codes

如何获得包含用户名的个人资料? 我应该在 get_profile 函数中写什么? 坦克

您可以使用 get() 查找:

def get_profile(request, username=None):
    profile = Profile.objects.get(user__username=username)

但是如果没有这样的用户,这可能会导致错误。所以更好的方法是使用 shortcuts.get_object_or_404():

from django.shortcuts import get_object_or_404


def get_profile(request, username=None):
    profile = get_object_or_404(Profile, user__username=username)

如果您对 双下划线 语法 (user__username=username) 感到困惑,请查看 the docs for field lookups.