diff -r 5ff1fc726848 -r c6bca38c1cbf parts/django/tests/modeltests/fixtures/models.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/parts/django/tests/modeltests/fixtures/models.py Sat Jan 08 11:20:57 2011 +0530 @@ -0,0 +1,92 @@ +""" +37. Fixtures. + +Fixtures are a way of loading data into the database in bulk. Fixure data +can be stored in any serializable format (including JSON and XML). Fixtures +are identified by name, and are stored in either a directory named 'fixtures' +in the application directory, on in one of the directories named in the +``FIXTURE_DIRS`` setting. +""" + +from django.contrib.auth.models import Permission +from django.contrib.contenttypes import generic +from django.contrib.contenttypes.models import ContentType +from django.db import models, DEFAULT_DB_ALIAS +from django.conf import settings + + +class Category(models.Model): + title = models.CharField(max_length=100) + description = models.TextField() + + def __unicode__(self): + return self.title + + class Meta: + ordering = ('title',) + +class Article(models.Model): + headline = models.CharField(max_length=100, default='Default headline') + pub_date = models.DateTimeField() + + def __unicode__(self): + return self.headline + + class Meta: + ordering = ('-pub_date', 'headline') + +class Blog(models.Model): + name = models.CharField(max_length=100) + featured = models.ForeignKey(Article, related_name='fixtures_featured_set') + articles = models.ManyToManyField(Article, blank=True, + related_name='fixtures_articles_set') + + def __unicode__(self): + return self.name + + +class Tag(models.Model): + name = models.CharField(max_length=100) + tagged_type = models.ForeignKey(ContentType, related_name="fixtures_tag_set") + tagged_id = models.PositiveIntegerField(default=0) + tagged = generic.GenericForeignKey(ct_field='tagged_type', + fk_field='tagged_id') + + def __unicode__(self): + return '<%s: %s> tagged "%s"' % (self.tagged.__class__.__name__, + self.tagged, self.name) + +class PersonManager(models.Manager): + def get_by_natural_key(self, name): + return self.get(name=name) + +class Person(models.Model): + objects = PersonManager() + name = models.CharField(max_length=100) + def __unicode__(self): + return self.name + + class Meta: + ordering = ('name',) + + def natural_key(self): + return (self.name,) + +class Visa(models.Model): + person = models.ForeignKey(Person) + permissions = models.ManyToManyField(Permission, blank=True) + + def __unicode__(self): + return '%s %s' % (self.person.name, + ', '.join(p.name for p in self.permissions.all())) + +class Book(models.Model): + name = models.CharField(max_length=100) + authors = models.ManyToManyField(Person) + + def __unicode__(self): + return '%s by %s' % (self.name, + ' and '.join(a.name for a in self.authors.all())) + + class Meta: + ordering = ('name',)