mirror of
				https://github.com/django/django.git
				synced 2025-10-27 07:36:08 +00:00 
			
		
		
		
	Aggregation optimization didn't account for not referenced set-returning annotations on Postgres. Co-authored-by: Simon Charette <charette.s@gmail.com>
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.db import models
 | |
| 
 | |
| 
 | |
| class Author(models.Model):
 | |
|     name = models.CharField(max_length=100)
 | |
|     age = models.IntegerField()
 | |
|     friends = models.ManyToManyField("self", blank=True)
 | |
| 
 | |
| 
 | |
| class Publisher(models.Model):
 | |
|     name = models.CharField(max_length=255)
 | |
|     num_awards = models.IntegerField()
 | |
| 
 | |
| 
 | |
| class Book(models.Model):
 | |
|     isbn = models.CharField(max_length=9)
 | |
|     name = models.CharField(max_length=255)
 | |
|     pages = models.IntegerField()
 | |
|     rating = models.FloatField()
 | |
|     price = models.DecimalField(decimal_places=2, max_digits=6)
 | |
|     authors = models.ManyToManyField(Author)
 | |
|     contact = models.ForeignKey(Author, models.CASCADE, related_name="book_contact_set")
 | |
|     publisher = models.ForeignKey(Publisher, models.CASCADE)
 | |
|     pubdate = models.DateField()
 | |
| 
 | |
| 
 | |
| class Store(models.Model):
 | |
|     name = models.CharField(max_length=255)
 | |
|     books = models.ManyToManyField(Book)
 | |
|     original_opening = models.DateTimeField()
 | |
|     friday_night_closing = models.TimeField()
 | |
|     area = models.IntegerField(null=True, db_column="surface")
 | |
| 
 | |
| 
 | |
| class DepartmentStore(Store):
 | |
|     chain = models.CharField(max_length=255)
 | |
| 
 | |
| 
 | |
| class Employee(models.Model):
 | |
|     # The order of these fields matter, do not change. Certain backends
 | |
|     # rely on field ordering to perform database conversions, and this
 | |
|     # model helps to test that.
 | |
|     first_name = models.CharField(max_length=20)
 | |
|     manager = models.BooleanField(default=False)
 | |
|     last_name = models.CharField(max_length=20)
 | |
|     store = models.ForeignKey(Store, models.CASCADE)
 | |
|     age = models.IntegerField()
 | |
|     salary = models.DecimalField(max_digits=8, decimal_places=2)
 | |
| 
 | |
| 
 | |
| class Company(models.Model):
 | |
|     name = models.CharField(max_length=200)
 | |
|     motto = models.CharField(max_length=200, null=True, blank=True)
 | |
|     ticker_name = models.CharField(max_length=10, null=True, blank=True)
 | |
|     description = models.CharField(max_length=200, null=True, blank=True)
 | |
| 
 | |
| 
 | |
| class Ticket(models.Model):
 | |
|     active_at = models.DateTimeField()
 | |
|     duration = models.DurationField()
 | |
| 
 | |
| 
 | |
| class JsonModel(models.Model):
 | |
|     data = models.JSONField(default=dict, blank=True)
 | |
|     id = models.IntegerField(primary_key=True)
 | |
| 
 | |
|     class Meta:
 | |
|         required_db_features = {"supports_json_field"}
 |