Как вставить NULL в базу данных, используя Django - PullRequest
1 голос
/ 09 июня 2011

У меня проблема с вставкой NULL в Django.Я имею в виду, я не знаю, как это сделать.

У меня есть функция, давайте назовем ее find_position, тогда у меня есть поле в модели, подобное position (IntegerField, null = True, пусто = True),Эта функция проверяет некоторый html-код, и если он совпадает с каким-либо регулярным выражением, он возвращает целое число, но если он не находит - должен возвращать NULL или None или что-то, что я могу поместить в базу данных.

 def find_position(self, to_find, something): 
   ...
       if re.search(to_find, something): 
           return i + (page * 10) + 1 
    return NULL # or what i have to return here?

И у меня есть это:

_position = find_position(to_find, something)
p = Result(position=_position, ...)
r.save()

Ранее я пользовался CharField для position и возвращал '-', если не нашел результат.Но у меня были проблемы с подсчетом итоговых результатов, например position__lte = 10 (потому что это не integer, а перепутано с числами и строками -.

Что я могу сделать с этим?

1 Ответ

6 голосов
/ 09 июня 2011

Сделайте так, чтобы функция возвращала None (или ничего не возвращала, это то же самое, что и возвращение None), в базе данных она будет сохранена Null:

 def find_position(self, to_find, something): 
   ...
       if re.search(to_find, something): 
           return i + (page * 10) + 1 
    return None
...