1. """
    
  2. Regression tests for proper working of ForeignKey(null=True). Tests these bugs:
    
  3. 
    
  4.     * #7512: including a nullable foreign key reference in Meta ordering has
    
  5. unexpected results
    
  6. 
    
  7. """
    
  8. from django.db import models
    
  9. 
    
  10. 
    
  11. # The first two models represent a very simple null FK ordering case.
    
  12. class Author(models.Model):
    
  13.     name = models.CharField(max_length=150)
    
  14. 
    
  15. 
    
  16. class Article(models.Model):
    
  17.     title = models.CharField(max_length=150)
    
  18.     author = models.ForeignKey(Author, models.SET_NULL, null=True)
    
  19. 
    
  20.     class Meta:
    
  21.         ordering = ["author__name"]
    
  22. 
    
  23. 
    
  24. # These following 4 models represent a far more complex ordering case.
    
  25. class SystemInfo(models.Model):
    
  26.     system_name = models.CharField(max_length=32)
    
  27. 
    
  28. 
    
  29. class Forum(models.Model):
    
  30.     system_info = models.ForeignKey(SystemInfo, models.CASCADE)
    
  31.     forum_name = models.CharField(max_length=32)
    
  32. 
    
  33. 
    
  34. class Post(models.Model):
    
  35.     forum = models.ForeignKey(Forum, models.SET_NULL, null=True)
    
  36.     title = models.CharField(max_length=32)
    
  37. 
    
  38. 
    
  39. class Comment(models.Model):
    
  40.     post = models.ForeignKey(Post, models.SET_NULL, null=True)
    
  41.     comment_text = models.CharField(max_length=250)
    
  42. 
    
  43.     class Meta:
    
  44.         ordering = ["post__forum__system_info__system_name", "comment_text"]