Python “django”;仅限();这个方法似乎不能正常工作

Python “django”;仅限();这个方法似乎不能正常工作,python,django,Python,Django,Models.py class Post(models.Model): id = models.IntegerField(default=0) name = models.CharField(max_length=200, default='', blank=True) click = models.IntegerField(default=0) content = models.CharField(max_length=200, default='', blan

Models.py

class Post(models.Model):
    id = models.IntegerField(default=0)
    name = models.CharField(max_length=200, default='', blank=True)
    click = models.IntegerField(default=0)
    content = models.CharField(max_length=200, default='', blank=True)
下面是我的代码

post = Post.objects.filter(id=3).only('name')
print(post.values())
结果如我所料

<QuerySet [{'name': 'Micheal'}]>

但实际结果是

<QuerySet [{'id': 3, 'name': 'Micheal', 'click': 2, 'content': 'asdf'}]>


如何解决此问题?

看起来您误解了以下用法:

惟一的()方法或多或少与defer()相反。你管它叫什么 具有检索模型时不应延迟的字段。 如果您有一个几乎所有字段都需要延迟的模型, 使用only()指定互补字段集可能会导致 更简单的代码

您要找的是和:


看起来您误解了以下用法:

惟一的()方法或多或少与defer()相反。你管它叫什么 具有检索模型时不应延迟的字段。 如果您有一个几乎所有字段都需要延迟的模型, 使用only()指定互补字段集可能会导致 更简单的代码

您要找的是和:

我们可以将您的查询写在一行中,如下所示:

post = Post.objects.filter(id=3).only('name').values()
print(post)

在中,如果未指定字段,则每个字典将包含数据库表中每个字段的键和值

values()方法采用可选的位置参数,*fields,用于指定应限制选择的字段名。如果指定字段,则每个字典将仅包含指定字段的字段键/值。如果不指定字段,则每个字典将包含数据库表中每个字段的键和值


因此,这就是为什么:

<QuerySet [{'id': 3, 'name': 'Micheal', 'click': 2, 'content': 'asdf'}]>

是预期的输出


我怎样才能解决这个问题

  • 只是用户或用户
  • 您可能有兴趣使用
    values\u list()
    flat=True
    参数,因为您只需要一个字段(
    name
我们可以将您的查询写在一行中,如下所示:

post = Post.objects.filter(id=3).only('name').values()
print(post)

在中,如果未指定字段,则每个字典将包含数据库表中每个字段的键和值

values()方法采用可选的位置参数,*fields,用于指定应限制选择的字段名。如果指定字段,则每个字典将仅包含指定字段的字段键/值。如果不指定字段,则每个字典将包含数据库表中每个字段的键和值


因此,这就是为什么:

<QuerySet [{'id': 3, 'name': 'Micheal', 'click': 2, 'content': 'asdf'}]>

是预期的输出


我怎样才能解决这个问题

  • 只是用户或用户
  • 您可能有兴趣使用
    values\u list()
    flat=True
    参数,因为您只需要一个字段(
    name