Django数据库查询
我在Django里有一个模型。这个模型里有一个组,组里面有摄像头。
class Groups(models.Model):
groupName = models.CharField(max_length=255)
class Cameras(models.Model):
group = models.ForeignKey(Groups)
cameraID = models.IntegerField()
当我尝试从模型中删除一个摄像头或者一组摄像头的时候。
camera = Cameras.objects.filter(cameraID=int(camID))
camera.delete()
它会删除所有ID大于0的摄像头。但是如果我有一个摄像头的ID是'0',它就无法删除。你们觉得这是什么原因呢?
2 个回答
3
当你使用过滤器的时候,可能会得到0个或者多个对象返回,而不是像get
那样只会返回一个对象,或者出现错误。
如果你想删除过滤器返回的所有对象,可以像下面这样逐个处理:
cameras = Cameras.objects.filter(cameraID=int(camID))
## let's say this returns [<Camera:1>,<Camera:2>]
for camera in cameras:
camera.delete()
## this loop will delete each object in the query
2
试着用 camera = Cameras.objects.get(pk=camID)
这行代码,这样你就能确定你只拿到了一个对象。然后你可以用 camera.delete()
来删除它。还有,你的代码里其实不需要那些 ';' 符号。