Метод создания экземпляра модели на основе объекта запроса - PullRequest
1 голос
/ 02 марта 2011

У меня есть такая модель:

class UserSubmission(models.Model):
    mantra = models.CharField(max_length=64)
    ip = models.CharField(max_length=15) # xxx.xxx.xxx.xxx

Я хочу создать такую ​​функцию:

def create_submission(request, mantra):
    s = UserSubmission(mantra=mantra)
    ip_meta_entry = 'HTTP_X_REAL_IP' in request.META and 'HTTP_X_REAL_IP' or 'REMOTE_ADDR'
    s.ip = request.META[ip_meta_entry]
    s.save()
    return s

Примечание: Выше приведено исключительно длядемонстрационные цели, а не точно что я делаю, но я отвлекся ...

Где было бы идеальное место для размещения функции, подобной этой?Классный метод на модели?В диспетчере?Что было бы лучшей практикой.

1 Ответ

2 голосов
/ 02 марта 2011

Я склонен помещать функции, которые используют request в views.py.Помимо проверки ошибок, ваш код должен работать нормально.

def create_submission(request, mantra):
    ip_meta_entry = 'HTTP_X_REAL_IP' in request.META and 'HTTP_X_REAL_IP' or 'REMOTE_ADDR'
    s = UserSubmission(
        mantra=mantra,
        ip=request.META[ip_meta_entry])
    s.save()
    return s
...