mirror of
https://github.com/django/django.git
synced 2025-08-31 07:47:37 +00:00
Complete rework of translating data values from database Deprecation of SubfieldBase, removal of resolve_columns and convert_values in favour of a more general converter based approach and public API Field.from_db_value(). Now works seamlessly with aggregation, .values() and raw queries. Thanks to akaariai in particular for extensive advice and inspiration, also to shaib, manfre and timograham for their reviews.
This commit is contained in:
parent
89559bcfb0
commit
e9103402c0
35 changed files with 443 additions and 521 deletions
30
tests/from_db_value/tests.py
Normal file
30
tests/from_db_value/tests.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
from django.db import connection
|
||||
from django.db.models import Max
|
||||
from django.test import TestCase
|
||||
|
||||
from .models import CashModel, Cash
|
||||
|
||||
|
||||
class FromDBValueTest(TestCase):
|
||||
def setUp(self):
|
||||
CashModel.objects.create(cash='12.50')
|
||||
|
||||
def test_simple_load(self):
|
||||
instance = CashModel.objects.get()
|
||||
self.assertIsInstance(instance.cash, Cash)
|
||||
|
||||
def test_values(self):
|
||||
values_list = CashModel.objects.values_list('cash', flat=True)
|
||||
self.assertIsInstance(values_list[0], Cash)
|
||||
|
||||
def test_aggregation(self):
|
||||
maximum = CashModel.objects.aggregate(m=Max('cash'))['m']
|
||||
self.assertIsInstance(maximum, Cash)
|
||||
|
||||
def test_defer(self):
|
||||
instance = CashModel.objects.defer('cash').get()
|
||||
self.assertIsInstance(instance.cash, Cash)
|
||||
|
||||
def test_connection(self):
|
||||
instance = CashModel.objects.get()
|
||||
self.assertEqual(instance.cash.vendor, connection.vendor)
|
Loading…
Add table
Add a link
Reference in a new issue