mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-10-30 23:47:53 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.db import models
 | |
| from django.template.defaultfilters import slugify
 | |
| import uuid
 | |
| 
 | |
| def uuid_str():
 | |
|     return str(uuid.uuid1())
 | |
| 
 | |
| 
 | |
| RATING_CHOICES = ((0, 'Awful'),
 | |
|                   (1, 'Poor'),
 | |
|                   (2, 'OK'),
 | |
|                   (3, 'Good'),
 | |
|                   (4, 'Excellent'))
 | |
| 
 | |
| MAX_POSTS = 10
 | |
| 
 | |
| class BlogPost(models.Model):
 | |
|     key = models.CharField(primary_key=True, max_length=64, default=uuid_str, editable=False)
 | |
|     title = models.CharField(max_length=128)
 | |
|     content = models.TextField()
 | |
|     created = models.DateTimeField(auto_now_add=True)
 | |
|     slug = models.SlugField(editable=False, default='')
 | |
| 
 | |
|     def save(self, *args, **kwargs):
 | |
|         """
 | |
|         For the purposes of the sandbox, limit the maximum number of stored models.
 | |
|         """
 | |
|         self.slug = slugify(self.title)
 | |
|         super(self.__class__, self).save(*args, **kwargs)
 | |
|         for obj in self.__class__.objects.order_by('-created')[MAX_POSTS:]:
 | |
|             obj.delete()
 | |
| 
 | |
| 
 | |
| class Comment(models.Model):
 | |
|     blogpost = models.ForeignKey(BlogPost, editable=False, related_name='comments')
 | |
|     username = models.CharField(max_length=128)
 | |
|     comment = models.TextField()
 | |
|     rating = models.IntegerField(blank=True, null=True, choices=RATING_CHOICES, help_text='How did you rate this post?')
 | |
|     created = models.DateTimeField(auto_now_add=True)
 | |
| 
 |