Метод django save () ничего не делает при вызове из функции - PullRequest
0 голосов
/ 08 ноября 2011

У меня возникли некоторые проблемы с методом save () Джанго.

1 / У меня есть эта простая модель:

class User (models.Model):
    userId = models.IntegerField()
    appInstance = models.TextField(null=True, blank=True)

2 / Затем в представлении я проверяю, является ли appInstanceсуществует, и если нет, я вызываю функцию:

if not u.appInstance:
    instance = autoAddApplication(request)

3 /, и autoAddApplication определяется следующим образом:

def autoAddApplication(request):

    session = request.session
    user = get_object_or_404(User, userId = session['user_id'])
    ## do stuff here and end up with an 'instanceMap' dictionary

    user.appInstance = simplejson.dumps(instanceMap)
    user.save()
    return instanceMap

Код выполняется без ошибок, но я не получаюМодель, сохраненная в базе данных при вызове функции autoAddApplication из условия на шаге 2.

Я попытался вызвать эту функцию 'autoAddApplication' напрямую, сопоставив URL-адрес непосредственно с этой функцией, и затем она работает, и ясохранить мою модель в БД.

Я полностью озадачен здесь.Почему это не работает, когда я вызываю эту функцию autoAddApplication из другой функции?Любая помощь будет принята с благодарностью.


РЕДАКТИРОВАТЬ Я наконец обнаружил, что я делаю неправильно.Позже на шаге 2 у меня был u.save (), который действительно сохранял вас (и, следовательно, отменял изменения, которые я сделал в функции autoAddApplication).Я решил это, передав вам функцию autoAddApplication.

В любом случае, спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2011

Попробуйте изменить имя класса с User на MyUser или что-то подобное, у вас могут быть проблемы с моделью User, определенной в Django.

0 голосов
/ 08 ноября 2011

Как насчет использования autoAddApplication в качестве приватной функции внутри представления?

    def _auto_add_application(session):
        user = get_object_or_404(User, user_id = session['user_id'])
        user.app_instance = simplejson.dumps(instance_map)
        user.save()
        return instance_map
...