MySQL / SQLite3 - PullRequest
       10

MySQL / SQLite3

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

Я наткнулся на следующее:

def save_formset(self, request, form, formset, change):
    instances = formset.save(commit=False)
    bargain_id = 0
    total_price = Decimal(0)
    for instance in instances:
        if isinstance(instance, BargainProduct):
            total_price += instance.quantity * instance.product.price
            bargain_id = instance.id
        instance.save()
    updateTotal = Bargain.objects.get(id=bargain_id)
    updateTotal.total_price = total_price - updateTotal.discount_price
    updateTotal.save()

Этот код работает для меня в моей локальной настройке MySQL, однако в моей тестовой среде, работающей на SQLite3 *, я получаю «Запрос на согласование сделки не существует». ошибка ..

Я полагаю, что это связано с другой иерархией сохранения экземпляров на SQLite ... однако кажется, что они запускаются (и должны) действовать одинаково ..?

* Я не могу перекомпилировать MySQL с поддержкой python на моем liveserver atm, так что это не пойдет

Ответы [ 4 ]

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

Локальный цикл возвращает эти распечатки (на MySQL) .. на sqlite3 он завершается с ошибкой, а не на запрос

('Formset: ', <django.forms.formsets.BargainProductFormFormSet object at 0x101fe3790>)
('Instances: ', [<BargainProduct: BargainProduct object>])
[18/Apr/2011 14:46:20] "POST /admin/shop/deal/add/ HTTP/1.1" 302 0
0 голосов
/ 17 апреля 2011

В этой строке выдается ошибка:

updateTotal = Bargain.objects.get(id=bargain_id)

, что, скорее всего, связано с этой строкой:

instances = formset.save(commit=False)

Определяли ли вы метод save () для набора форм?Потому что он не видел, чтобы иметь один встроенный.Вы сохраняете его, обращаясь к тому, что formset.cleaned_data возвращает как django docs скажем.

edit : я исправляю себя, на самом деле у него есть метод save (), основанный наэто страница .

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

Я смотрел на эту же проблему.Это сохраняет данные в базу данных, и форма заполнена.Проблема в том, что сохранение на instances = formset.save(commit=False) не возвращает значение.Когда я смотрю на встроенный метод сохранения, он должен возвращать сохраненные данные.

Еще одна странная вещь в этом заключается в том, что он работает на моей базе MySQL, но не на его SQLITE3.Кроме того, он не работает на моем бэкэнде MySQL.

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

Глядя на код, если у вас нет экземпляров, выходящих из formset.save (), bargain_id будет 0, когда он перейдет к строке Bargain.objects.get (id = bargain_id), так как он пропуститцикл for.Если это 0, я думаю, что это не удастся с ошибкой, которую вы видите.

Возможно, вы захотите проверить, правильно ли хранятся значения в базе данных во время вашего formset.save (), и возвращает ли он что-то обратно экземплярам.

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