我可以在 python 中删除查询集的某个项目,但不删除数据库中的该项目吗?

jar*_*fly 5 python django-queryset

我正在 django 中创建一个应用程序,我遇到了下一个问题:

我使用queryset下一个命令行:

queryset = Persons.objects.all()
Run Code Online (Sandbox Code Playgroud)

假设结果列表是下一个:['x', 'y', 'z']

我想删除x该列表中的一个元素,以便生成的列表为:['y', 'z']

我不想删除该元素x。所以我无法使用该命令item.delete()

如果我的模型是:

class A(models.Model):
    att1= models.ForeignKey(B)
    att2 = models.CharField(max_length=128)
...

class B(models.Model):
    ident = models.CharField(max_length=128)
...
Run Code Online (Sandbox Code Playgroud)

如何获取与 A 和 A.att2 value == 'test' 相关的 B 对象的查询集???

Ben*_*ieh 2

我认为你需要设置 related_name:

class A(models.Model):
    att1= models.ForeignKey(B, related_name='A_model')
    att2 = models.CharField(max_length=128)

class B(models.Model):
    ident = models.CharField(max_length=128)
Run Code Online (Sandbox Code Playgroud)

像这样查询:

B.objects.filter(A_model__att2="test")
Run Code Online (Sandbox Code Playgroud)

这是我在 stackoverflow 上的第一个答案希望这对你有帮助

如果您不想设置 related_name ,请尝试:

B.A_set.filter(att2="test")
Run Code Online (Sandbox Code Playgroud)

  • 您无需设置相关名称即可进行跨模型查找。 (2认同)