Django select_lated() 但只有一些字段

fir*_*fly 7 django django-models django-queryset python-3.x django-rest-framework

我想使用 select_lated() 但不加载通过 select_lated 加载的模型的所有字段。

我只想过滤通过 select_lated 加载的模型字段,而不影响其他查询集字段。有一种解决方案可以使用 only() 并显式指定所有字段,但当您有很多字段时,这是不切实际的。

在进化的情况下,使用 except() 并仅排除字段的解决方案也是不切实际的。(向模型添加字段)

还有别的办法吗?

举个例子就更容易理解了:

class User(model.Model):
    username = models.Charfield(max_length=50)
    # ... many fields here

class Musician(models.Model):
    created_by = models.ForeignKey(User)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)
    # ...
    # many of fields here
Run Code Online (Sandbox Code Playgroud)

我想通过使用 Django ORM 执行单个 SQL 查询来选择“Musician”模型的所有字段和仅用户的用户名。