mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	git-svn-id: http://code.djangoproject.com/svn/django/trunk@9548 bcc190cf-cafb-0310-a4f2-bffc1f526a37
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
 | |
| from django.db import models
 | |
| 
 | |
| try:
 | |
|     import decimal
 | |
| except ImportError:
 | |
|     from django.utils import _decimal as decimal    # Python 2.3 fallback
 | |
| 
 | |
| class Foo(models.Model):
 | |
|     a = models.CharField(max_length=10)
 | |
|     d = models.DecimalField(max_digits=5, decimal_places=3)
 | |
| 
 | |
| def get_foo():
 | |
|     return Foo.objects.get(id=1)
 | |
| 
 | |
| class Bar(models.Model):
 | |
|     b = models.CharField(max_length=10)
 | |
|     a = models.ForeignKey(Foo, default=get_foo)
 | |
| 
 | |
| class Whiz(models.Model):
 | |
|     CHOICES = (
 | |
|         ('Group 1', (
 | |
|                 (1,'First'),
 | |
|                 (2,'Second'),
 | |
|             )
 | |
|         ),
 | |
|         ('Group 2', (
 | |
|                 (3,'Third'),
 | |
|                 (4,'Fourth'),
 | |
|             )
 | |
|         ),
 | |
|         (0,'Other'),
 | |
|     )
 | |
|     c = models.IntegerField(choices=CHOICES, null=True)
 | |
|     
 | |
| class BigD(models.Model):
 | |
|     d = models.DecimalField(max_digits=38, decimal_places=30)
 | |
| 
 | |
| class BigS(models.Model):
 | |
|     s = models.SlugField(max_length=255)
 | |
| 
 | |
| __test__ = {'API_TESTS':"""
 | |
| # Create a couple of Places.
 | |
| >>> f = Foo.objects.create(a='abc', d=decimal.Decimal("12.34"))
 | |
| >>> f.id
 | |
| 1
 | |
| >>> b = Bar(b = "bcd")
 | |
| >>> b.a
 | |
| <Foo: Foo object>
 | |
| >>> b.save()
 | |
| 
 | |
| # Regression tests for #7913
 | |
| # Check that get_choices and get_flatchoices interact with
 | |
| # get_FIELD_display to return the expected values.
 | |
| 
 | |
| # Test a nested value
 | |
| >>> w = Whiz(c=1)
 | |
| >>> w.save()
 | |
| >>> w.get_c_display()
 | |
| u'First'
 | |
| 
 | |
| # Test a top level value
 | |
| >>> w.c = 0
 | |
| >>> w.get_c_display()
 | |
| u'Other'
 | |
| 
 | |
| # Test an invalid data value
 | |
| >>> w.c = 9
 | |
| >>> w.get_c_display()
 | |
| 9
 | |
| 
 | |
| # Test a blank data value
 | |
| >>> w.c = None
 | |
| >>> print w.get_c_display()
 | |
| None
 | |
| 
 | |
| # Test an empty data value
 | |
| >>> w.c = ''
 | |
| >>> w.get_c_display()
 | |
| u''
 | |
| 
 | |
| # Regression test for #8023: should be able to filter decimal fields using
 | |
| # strings (which is what gets passed through from, e.g., the admin interface).
 | |
| >>> Foo.objects.filter(d=u'1.23')
 | |
| []
 | |
| 
 | |
| # Regression test for #5079 -- ensure decimals don't go through a corrupting
 | |
| # float conversion during save.  
 | |
| >>> bd = BigD(d="12.9")
 | |
| >>> bd.save()
 | |
| >>> bd = BigD.objects.get(pk=bd.pk)
 | |
| >>> bd.d == decimal.Decimal("12.9")
 | |
| True
 | |
| 
 | |
| # Regression test for #9706: ensure SlugField honors max_length.
 | |
| >>> bs = BigS.objects.create(s = 'slug' * 50)
 | |
| >>> bs = BigS.objects.get(pk=bs.pk)
 | |
| >>> bs.s == 'slug' * 50
 | |
| True
 | |
| """}
 |