Счетчик поиска Django - PullRequest
       4

Счетчик поиска Django

0 голосов
/ 25 августа 2011

Здравствуйте, у меня есть приложение, которое проверяет и подсчитывает искомые термины, обновляя счетчик, если запрос уже был найден, и вставляет поле со счетчиком = 1, если запрос новый.

Модель поискового счетчика:

class Search(models.Model):
    term = models.CharField(unique=True, max_length=255)
    counter = models.IntegerField()
    last_search = models.DateTimeField()

и представление, содержащее это:

# update search counter with term
    try:        
        term = Search.objects.get(term=query)
    except Search.DoesNotExist:
        term = None
    if term:
        term.counter = F('counter') + 1
        term.last_search = datetime.now()
    else:
        term = Search(
                term=query,
                counter=1,
                last_search = datetime.now()
        )               
    term.save()

Мой вопрос действительно - это хороший способ сделать это, и есть ли более краткий способ выразить это? Мне это кажется чересчур уродливым, и, будучи новичком в Django, я бы хотел увидеть реализацию «наилучшей практики». Любые ответы приветствуются.

1 Ответ

0 голосов
/ 25 августа 2011

Вот более краткая версия (вам может потребоваться установить «default = 0» в поле счетчика):

try:
    term = Search.objects.get(term=query)
except Search.DoesNotExist:
    term = Search(term=query)

term.counter += 1
term.last_search = datetime.now()
term.save()

Вам не нужно устанавливать все значения в конструкторе - до тех пор, пока они будут сохранены ко времени сохранения или проверки.

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