mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	git-svn-id: http://code.djangoproject.com/svn/django/trunk@13934 bcc190cf-cafb-0310-a4f2-bffc1f526a37
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.test import TestCase
 | |
| 
 | |
| from regressiontests.null_fk.models import *
 | |
| 
 | |
| class NullFkTests(TestCase):
 | |
| 
 | |
|     def test_null_fk(self):
 | |
|         d = SystemDetails.objects.create(details='First details')
 | |
|         s = SystemInfo.objects.create(system_name='First forum', system_details=d)
 | |
|         f = Forum.objects.create(system_info=s, forum_name='First forum')
 | |
|         p = Post.objects.create(forum=f, title='First Post')
 | |
|         c1 = Comment.objects.create(post=p, comment_text='My first comment')
 | |
|         c2 = Comment.objects.create(comment_text='My second comment')
 | |
| 
 | |
|         # Starting from comment, make sure that a .select_related(...) with a specified
 | |
|         # set of fields will properly LEFT JOIN multiple levels of NULLs (and the things
 | |
|         # that come after the NULLs, or else data that should exist won't). Regression
 | |
|         # test for #7369.
 | |
|         c = Comment.objects.select_related().get(id=1)
 | |
|         self.assertEquals(c.post, p)
 | |
|         self.assertEquals(Comment.objects.select_related().get(id=2).post, None)
 | |
| 
 | |
|         self.assertQuerysetEqual(
 | |
|             Comment.objects.select_related('post__forum__system_info').all(),
 | |
|             [
 | |
|                 (1, u'My first comment', '<Post: First Post>'),
 | |
|                 (2, u'My second comment', 'None')
 | |
|             ],
 | |
|             transform = lambda c: (c.id, c.comment_text, repr(c.post))
 | |
|         )
 | |
| 
 | |
|         # Regression test for #7530, #7716.
 | |
|         self.assertTrue(Comment.objects.select_related('post').filter(post__isnull=True)[0].post is None)
 | |
| 
 | |
|         self.assertQuerysetEqual(
 | |
|             Comment.objects.select_related('post__forum__system_info__system_details'),
 | |
|             [
 | |
|                 (1, u'My first comment', '<Post: First Post>'),
 | |
|                 (2, u'My second comment', 'None')
 | |
|             ],
 | |
|             transform = lambda c: (c.id, c.comment_text, repr(c.post))
 | |
|         )
 |