Запрос Django, чтобы найти экземпляры модели, где somefilefield == Нет? - PullRequest
1 голос
/ 15 апреля 2011

Учитывая модель:

class Person(models.Model):
    name = models.CharField(max_length=200)
    resume = models.FileField(upload_to='resumes/', blank=True, null=True)

Я создал несколько человек через:

Person.objects.create(name='Brad')
Person.objects.create(name='Tony')

Как мне написать запрос, используя ORM, чтобы дать мне людей, у которых нет resume. Я пробовал следующее, но все не смогли вернуть желаемый результат:

>>> Person.objects.filter(resume=None)
[]
>>> Person.objects.filter(resume__exact=None)
[]
>>> Person.objects.filter(resume__isnull=True)
[]

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Я почти уверен, что вы фильтруете по пустой строке ''

Person.objects.filter(resume='')

Основным полем является CharField(), как указано в документах для Filefield.

Django хранит пробелы для CharFields в виде пустых строк, не равных NULL, поэтому фильтрация пустых строк приводит к получению лиц без резюме.

Model Field References regarding Null

0 голосов
/ 15 апреля 2011

попробуй

Person.objects.filter(resume__exact = None)

прочитайте документ здесь

http://docs.djangoproject.com/en/dev/ref/models/querysets/#id6

...