Запрос к базе данных Django - PullRequest
1 голос
/ 26 января 2012

У меня есть модель в Джанго. У него есть группа, и внутри группы есть камеры.

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()

Удаляет любую камеру с идентификатором, большим чем 0. Но если у меня есть идентификатор камеры, равный '0', он не может быть удален. Любые идеи, почему это будет.

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Когда вы используете фильтр, вы можете получить 0 или несколько возвращенных объектов, в отличие от get, который будет возвращать только 1 объект или вызывать ошибки.

Если вы хотите удалить все объекты, возвращаемые изфильтр, вы можете перебрать его так:

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 голосов
/ 26 января 2012

Попробуйте использовать camera = Cameras.objects.get(pk=camID), тогда вы точно знаете, что у вас есть только один объект. Вы можете camera.delete() Вам также не нужно все ';' символы в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...