mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	* Renamed the __unicode__ methods * Applied the python_2_unicode_compatible decorator * Removed the StrAndUnicode mix-in that is superseded by python_2_unicode_compatible * Kept the __unicode__ methods in classes that specifically test it under Python 2
		
			
				
	
	
		
			218 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			218 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from __future__ import unicode_literals
 | |
| 
 | |
| import datetime
 | |
| 
 | |
| from django.db import models
 | |
| from django.utils import six
 | |
| from django.utils.encoding import python_2_unicode_compatible
 | |
| 
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Author(models.Model):
 | |
|     name = models.CharField(max_length=100)
 | |
| 
 | |
|     class Meta:
 | |
|         ordering = ('name',)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| class BetterAuthor(Author):
 | |
|     write_speed = models.IntegerField()
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Book(models.Model):
 | |
|     author = models.ForeignKey(Author)
 | |
|     title = models.CharField(max_length=100)
 | |
| 
 | |
|     class Meta:
 | |
|         unique_together = (
 | |
|             ('author', 'title'),
 | |
|         )
 | |
|         ordering = ['id']
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.title
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class BookWithCustomPK(models.Model):
 | |
|     my_pk = models.DecimalField(max_digits=5, decimal_places=0, primary_key=True)
 | |
|     author = models.ForeignKey(Author)
 | |
|     title = models.CharField(max_length=100)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return '%s: %s' % (self.my_pk, self.title)
 | |
| 
 | |
| class Editor(models.Model):
 | |
|     name = models.CharField(max_length=100)
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class BookWithOptionalAltEditor(models.Model):
 | |
|     author = models.ForeignKey(Author)
 | |
|     # Optional secondary author
 | |
|     alt_editor = models.ForeignKey(Editor, blank=True, null=True)
 | |
|     title = models.CharField(max_length=100)
 | |
| 
 | |
|     class Meta:
 | |
|         unique_together = (
 | |
|             ('author', 'title', 'alt_editor'),
 | |
|         )
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.title
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class AlternateBook(Book):
 | |
|     notes = models.CharField(max_length=100)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return '%s - %s' % (self.title, self.notes)
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class AuthorMeeting(models.Model):
 | |
|     name = models.CharField(max_length=100)
 | |
|     authors = models.ManyToManyField(Author)
 | |
|     created = models.DateField(editable=False)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| class CustomPrimaryKey(models.Model):
 | |
|     my_pk = models.CharField(max_length=10, primary_key=True)
 | |
|     some_field = models.CharField(max_length=100)
 | |
| 
 | |
| 
 | |
| # models for inheritance tests.
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Place(models.Model):
 | |
|     name = models.CharField(max_length=50)
 | |
|     city = models.CharField(max_length=50)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Owner(models.Model):
 | |
|     auto_id = models.AutoField(primary_key=True)
 | |
|     name = models.CharField(max_length=100)
 | |
|     place = models.ForeignKey(Place)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return "%s at %s" % (self.name, self.place)
 | |
| 
 | |
| class Location(models.Model):
 | |
|     place = models.ForeignKey(Place, unique=True)
 | |
|     # this is purely for testing the data doesn't matter here :)
 | |
|     lat = models.CharField(max_length=100)
 | |
|     lon = models.CharField(max_length=100)
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class OwnerProfile(models.Model):
 | |
|     owner = models.OneToOneField(Owner, primary_key=True)
 | |
|     age = models.PositiveIntegerField()
 | |
| 
 | |
|     def __str__(self):
 | |
|         return "%s is %d" % (self.owner.name, self.age)
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Restaurant(Place):
 | |
|     serves_pizza = models.BooleanField()
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Product(models.Model):
 | |
|     slug = models.SlugField(unique=True)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.slug
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Price(models.Model):
 | |
|     price = models.DecimalField(max_digits=10, decimal_places=2)
 | |
|     quantity = models.PositiveIntegerField()
 | |
| 
 | |
|     def __str__(self):
 | |
|         return "%s for %s" % (self.quantity, self.price)
 | |
| 
 | |
|     class Meta:
 | |
|         unique_together = (('price', 'quantity'),)
 | |
| 
 | |
| class MexicanRestaurant(Restaurant):
 | |
|     serves_tacos = models.BooleanField()
 | |
| 
 | |
| class ClassyMexicanRestaurant(MexicanRestaurant):
 | |
|     restaurant = models.OneToOneField(MexicanRestaurant, parent_link=True, primary_key=True)
 | |
|     tacos_are_yummy = models.BooleanField()
 | |
| 
 | |
| # models for testing unique_together validation when a fk is involved and
 | |
| # using inlineformset_factory.
 | |
| @python_2_unicode_compatible
 | |
| class Repository(models.Model):
 | |
|     name = models.CharField(max_length=25)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Revision(models.Model):
 | |
|     repository = models.ForeignKey(Repository)
 | |
|     revision = models.CharField(max_length=40)
 | |
| 
 | |
|     class Meta:
 | |
|         unique_together = (("repository", "revision"),)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return "%s (%s)" % (self.revision, six.text_type(self.repository))
 | |
| 
 | |
| # models for testing callable defaults (see bug #7975). If you define a model
 | |
| # with a callable default value, you cannot rely on the initial value in a
 | |
| # form.
 | |
| class Person(models.Model):
 | |
|     name = models.CharField(max_length=128)
 | |
| 
 | |
| class Membership(models.Model):
 | |
|     person = models.ForeignKey(Person)
 | |
|     date_joined = models.DateTimeField(default=datetime.datetime.now)
 | |
|     karma = models.IntegerField()
 | |
| 
 | |
| # models for testing a null=True fk to a parent
 | |
| class Team(models.Model):
 | |
|     name = models.CharField(max_length=100)
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Player(models.Model):
 | |
|     team = models.ForeignKey(Team, null=True)
 | |
|     name = models.CharField(max_length=100)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| # Models for testing custom ModelForm save methods in formsets and inline formsets
 | |
| @python_2_unicode_compatible
 | |
| class Poet(models.Model):
 | |
|     name = models.CharField(max_length=100)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Poem(models.Model):
 | |
|     poet = models.ForeignKey(Poet)
 | |
|     name = models.CharField(max_length=100)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 | |
| 
 | |
| @python_2_unicode_compatible
 | |
| class Post(models.Model):
 | |
|     title = models.CharField(max_length=50, unique_for_date='posted', blank=True)
 | |
|     slug = models.CharField(max_length=50, unique_for_year='posted', blank=True)
 | |
|     subtitle = models.CharField(max_length=50, unique_for_month='posted', blank=True)
 | |
|     posted = models.DateField()
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.name
 |