mirror of
https://github.com/django/django.git
synced 2024-11-18 07:26:04 +00:00
e9103402c0
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.
48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
"""
|
|
Tests for field subclassing.
|
|
"""
|
|
|
|
import warnings
|
|
|
|
from django.db import models
|
|
from django.utils.encoding import force_text
|
|
from django.utils.deprecation import RemovedInDjango20Warning
|
|
|
|
from .fields import Small, SmallField, SmallerField, JSONField
|
|
from django.utils.encoding import python_2_unicode_compatible
|
|
|
|
|
|
# Catch warning about subfieldbase -- remove in Django 2.0
|
|
warnings.filterwarnings(
|
|
'ignore',
|
|
'SubfieldBase has been deprecated. Use Field.from_db_value instead.',
|
|
RemovedInDjango20Warning
|
|
)
|
|
|
|
|
|
@python_2_unicode_compatible
|
|
class MyModel(models.Model):
|
|
name = models.CharField(max_length=10)
|
|
data = SmallField('small field')
|
|
|
|
def __str__(self):
|
|
return force_text(self.name)
|
|
|
|
|
|
class OtherModel(models.Model):
|
|
data = SmallerField()
|
|
|
|
|
|
class ChoicesModel(models.Model):
|
|
SMALL_AB = Small('a', 'b')
|
|
SMALL_CD = Small('c', 'd')
|
|
SMALL_CHOICES = (
|
|
(SMALL_AB, str(SMALL_AB)),
|
|
(SMALL_CD, str(SMALL_CD)),
|
|
)
|
|
data = SmallField('small field', choices=SMALL_CHOICES)
|
|
|
|
|
|
class DataModel(models.Model):
|
|
data = JSONField()
|