m = NewMortgage.objects.get(order_id='muyydc') # Все ассеты ордера, специальный объект, не related manager m.assets # <mortgages.models.assets.MortgageAssets object at 0x110062a50> # Можно итерировать for asset in m.assets: print asset # <Asset: Account balance for customer Valentin Rüst. Available: 190000, Used: 150000, Special: 0. Pledge: Pre-obtain> # Все ассеты main customer info. Специальний объект, не realted manager m.main_customer_info.assets #<mortgages.models.assets.CustomerInfoAssets object at 0x110062790> # Можно итерировать for asset in m.main_customer_info.assets: print asset # <Asset: Account balance for customer Valentin Rüst. Available: 190000, Used: 150000, Special: 0. Pledge: Pre-obtain> # Доступ по типу ассета остался, но т.к. мы можем иметь n account_balance, возвращает специальный объект AssetBundle m.main_customer_info.assets['account_balance'] #<AssetBundle for account_balance. Total 1 assets. Available 190000, Used: 150000, Amortization: 0> # Можно узнать колво ассетов определенного типа len(m.main_customer_info.assets['account_balance']) # 1 # Есть доступ до самих ассетов этого типа m.main_customer_info.assets['account_balance'].assets #[<Asset: Account balance for customer Valentin Rüst. Available: 190000, Used: 150000, Special: 0. Pledge: Pre-obtain>] # Можно итерировать for account_balance_asset in m.assets['account_balance']: print account_balance_asset # <Asset: Account balance for customer Valentin Rüst. Available: 190000, Used: 150000, Special: 0. Pledge: Pre-obtain> # Получить сумы всех ассетов account_balance данного пользователя m.main_customer_info.assets['account_balance'].available_amount #190000 m.main_customer_info.assets['account_balance'].used_amount #150000 m.main_customer_info.assets['account_balance'].special_amortization #0 # Можно создавать ассеты m.main_customer_info.assets.create(kind='account_balance', available_amount=10000, used_amount=1000) #<Asset: Account balance for customer Valentin Rüst. Available: 10000, Used: 1000, Special: 0. Pledge: None> # Теперь у нас два ассета account_balance m.main_customer_info.assets['account_balance'].assets # [ # <Asset: Account balance for customer Valentin Rüst. Available: 190000, Used: 150000, Special: 0. Pledge: Pre-obtain>, # <Asset: Account balance for customer Valentin Rüst. Available: 10000, Used: 1000, Special: 0. Pledge: None>] # Суммы поменялись m.main_customer_info.assets['account_balance'].available_amount #200000 m.main_customer_info.assets['account_balance'].used_amount #151000 len(m.main_customer_info.assets['account_balance']) #2 # Еще оно изменение: для новых ордеров мы не создаем assets по-умолчанию # Но доступ к AssetBundle есть, будет пустым new_order = NewMortgage.objects.get(order_id='ebala') new_order.main_customer_info.assets['account_balance'] #<AssetBundle for account_balance. Total 0 assets. Available 0, Used: 0, Amortization: 0> new_order.main_customer_info.assets['account_balance'].available_amount #0 new_order.main_customer_info.assets['account_balance'].used_amount #0 new_order.main_customer_info.assets['account_balance'].special_amortization #0 # Чтоб проверить есть ли assets определенного типа # не нужно писать if m.main_customer_info.assets['account_balance'].assets: # можно просто так if new_order.main_customer_info.assets['account_balance']: print 'Assets of account balance exists' # WARNING если изменяли assets через модель Asset или через new_order.main_customer_info.assets # то в new_order.assets могут остаться старые закешированные данные # перегрузить можно так: new_order.assets.reload()
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question