Błąd - python [Zamknięte]

To pytanie zostało zamknięte z powodu: niezwiązane z tematem lub nieaktualne

przez
Dr.One
na 13.01.2016 21:39:00

Panowie, odczytuję dane z tabeli, wyświetlam na ekranie konsoli. Wszystko wygląda poprawnie. Nie wiem jak wyłuskać wartość i umieścić w polu.

#pole typu function - jak widać :)
...
            'current_stock': fields.function(_get_current_stock, type='char', string='Currently in stock'),
...

#definicja która pobiera dane do pola
    def _get_current_stock(self, cr, uid, ids, field_name, arg, context=None):
        res                =    []
        in_stock        =    0
        tot_sold        =    0
        product_id        =    0

        for obj in self.browse(cr, uid, ids, context=context):
            cr.execute(""" select sum(qty) from stock_quant where product_id = %s and location_id = 7;""" %(obj.product_id.id))
            tot_sold = cr.fetchall()
            cr.execute(""" select sum(qty) from stock_quant where product_id = %s and location_id != 7;""" %(obj.product_id.id))
            in_stock = cr.fetchall()            
            res[obj.id] = in_stock[0]
# drukuje wartości w CLI 
            print '========================================================================'
            print '|| Total sell: ', tot_sold[0], '        Left in stock: ',in_stock[0]
            print '========================================================================'
            return res

Widok CLI:

========================================================================
|| Total sell:  (7.0,)         Left in stock:  (320.0,)
========================================================================

Kiedy próbuję przepisać do res wartość in_stock[0]

pojawia się błąd:

new_values = dict(values)
TypeError: cannot convert dictionary update sequence element #0 to a sequence

Jak powinienem to zrobić ?

Dr.One
Dr.One
341
| 5 3 5
Data pytania 05.01.2016, 10:45
0
głos
436 Odsłony

Zwróć uwagę na nawiasy i przecinki w swoich wynikach. Widok CLI podaje Ci zapisy obiektów typu "dictionary". Polecam studia nad pytonem i typami danych jakie są w nim dostępne, np. patrz: https://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie

Janusz Stefaniak
na 05.01.2016, 19:44

Zwracam, z jakiegoś powodu nie widzę co mogłem źle wpisać :) Przy okazji, podsunąłeś mi świetny kawałek literatury, dziękuję. Jednak jestem już na starcie nieco zdziwiony ponieważ zainstalowałem pythona w wersji 2.xxx (7) według książki powinna to byc wersja 2.5 niestety nie mogę takowej znaleźć. Wklepałem przykład:

#-*- coding: utf-8 -*-
print 'Example 1'
print 'not working'
print 'expected result: pwd=secret;database=master;uid=sa;server=mpilgrim '
print '==================================================='
print 'Program:'
def buildConnectionString(params):
        u"""Tworzy łańcuch znaków na podstawie słownika parametrów.Zwraca łańcuch znaków."""
        return ";".join(["%s=%s" % (k, v) for k, v in params.items()])
        if __name__ == "__main__":
                myParams = {"server":"mpilgrim",\
                            "database":"master",\
                            "uid":"sa",\
                            "pwd":"secret"
                            }
        print buildConnectionString(myParams), 'nic z tego'
        print 'Hello', myParams
print 'Nothing happened'
I okazuje się, że wynikiem działania tego prostego skryptu jest "NIC", drukowanie funkcji print buildConnectionString(myParams) nic nie robi, sprawdziłem czy aby indenty nie są złe itd. Nie, wszystko w porządku. Czy wersje 2.5 i 2.7 różnią się aż tak, że nawet prosty przykład nie działa ? Tak wiem, dramatyzuje i przesadzam :) Ale nawet polecenie print w wersji 2.7 działa normalnie czyli print '' a już w wersji 3.4 takie wprowadzenie polecenia powoduje błąd bo wymaga nawiasów :) print() chore to jakieś :)
Dr.One
na 07.01.2016, 10:07

Twoja odpowiedź

Spróbuj dać znacząca odpowiedź. Jeśli chcesz wypowiedzieć się na temat pytania lub odpowiedzi, po prostu użyj narzędzia komentowania. Proszę pamiętać, że zawsze można zrewidować swoją odpowiedź - nie ma potrzeby odpowiadać na to samo pytanie dwa razy. Także prosimy, nie zapomnij zagłosować - to naprawdę pomaga wybrać najlepsze pytania i odpowiedzi!

Zadaj Pytanie

Bądź na bieżąco

O tym forum

Forum dla profesjonalistów i entuzjastów systemu Odoo. Dyskusje, porady, opinie, komentarze.

Przeczytaj wytyczne

Narzędzia do pytań

4 obserwujący

Statystyki

Spytał/a: 05.01.2016, 10:45
Oglądano: 436 razy
Ostatnia aktualizacja: 13.01.2016, 21:39