2013-12-24 11:25:17 +00:00
|
|
|
from django.apps.registry import Apps
|
2012-06-18 16:32:03 +00:00
|
|
|
from django.db import models
|
2013-12-22 19:44:49 +00:00
|
|
|
from django.utils.encoding import python_2_unicode_compatible
|
2012-06-18 16:32:03 +00:00
|
|
|
|
|
|
|
# Because we want to test creation and deletion of these as separate things,
|
2013-12-24 11:25:17 +00:00
|
|
|
# these models are all inserted into a separate Apps so the main test
|
2013-09-03 15:51:34 +00:00
|
|
|
# runner doesn't migrate them.
|
2013-05-09 14:16:43 +00:00
|
|
|
|
2013-12-24 11:25:17 +00:00
|
|
|
new_apps = Apps()
|
2012-06-18 16:32:03 +00:00
|
|
|
|
|
|
|
|
|
|
|
class Author(models.Model):
|
|
|
|
name = models.CharField(max_length=255)
|
2012-09-07 19:40:59 +00:00
|
|
|
height = models.PositiveIntegerField(null=True, blank=True)
|
2012-06-18 16:32:03 +00:00
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2012-06-18 16:32:03 +00:00
|
|
|
|
|
|
|
|
2014-10-31 13:08:24 +00:00
|
|
|
class AuthorWithDefaultHeight(models.Model):
|
|
|
|
name = models.CharField(max_length=255)
|
|
|
|
height = models.PositiveIntegerField(null=True, blank=True, default=42)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2012-08-02 14:08:39 +00:00
|
|
|
class AuthorWithM2M(models.Model):
|
|
|
|
name = models.CharField(max_length=255)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2012-08-02 14:08:39 +00:00
|
|
|
|
|
|
|
|
2014-05-08 17:33:59 +00:00
|
|
|
class AuthorWithM2MThrough(models.Model):
|
|
|
|
name = models.CharField(max_length=255)
|
|
|
|
tags = models.ManyToManyField("schema.TagM2MTest", related_name="authors", through="AuthorTag")
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
|
|
|
class AuthorTag(models.Model):
|
|
|
|
author = models.ForeignKey("schema.AuthorWithM2MThrough")
|
|
|
|
tag = models.ForeignKey("schema.TagM2MTest")
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2012-06-18 16:32:03 +00:00
|
|
|
class Book(models.Model):
|
|
|
|
author = models.ForeignKey(Author)
|
2012-08-30 22:11:56 +00:00
|
|
|
title = models.CharField(max_length=100, db_index=True)
|
2012-06-18 16:32:03 +00:00
|
|
|
pub_date = models.DateTimeField()
|
2013-05-09 14:16:43 +00:00
|
|
|
# tags = models.ManyToManyField("Tag", related_name="books")
|
2012-06-18 16:32:03 +00:00
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2012-08-02 14:08:39 +00:00
|
|
|
|
|
|
|
|
2014-08-09 07:50:00 +00:00
|
|
|
class BookWeak(models.Model):
|
|
|
|
author = models.ForeignKey(Author, db_constraint=False)
|
|
|
|
title = models.CharField(max_length=100, db_index=True)
|
|
|
|
pub_date = models.DateTimeField()
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2012-09-07 18:39:22 +00:00
|
|
|
class BookWithM2M(models.Model):
|
|
|
|
author = models.ForeignKey(Author)
|
|
|
|
title = models.CharField(max_length=100, db_index=True)
|
|
|
|
pub_date = models.DateTimeField()
|
2013-08-19 12:50:26 +00:00
|
|
|
tags = models.ManyToManyField("TagM2MTest", related_name="books")
|
2012-09-07 18:39:22 +00:00
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2012-09-07 18:39:22 +00:00
|
|
|
|
|
|
|
|
2014-03-08 23:57:25 +00:00
|
|
|
class TagThrough(models.Model):
|
|
|
|
book = models.ForeignKey("schema.BookWithM2MThrough")
|
|
|
|
tag = models.ForeignKey("schema.TagM2MTest")
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
|
|
|
class BookWithM2MThrough(models.Model):
|
|
|
|
tags = models.ManyToManyField("TagM2MTest", related_name="books", through=TagThrough)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2012-09-07 16:51:11 +00:00
|
|
|
class BookWithSlug(models.Model):
|
|
|
|
author = models.ForeignKey(Author)
|
|
|
|
title = models.CharField(max_length=100, db_index=True)
|
|
|
|
pub_date = models.DateTimeField()
|
|
|
|
slug = models.CharField(max_length=20, unique=True)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2012-09-07 16:51:11 +00:00
|
|
|
db_table = "schema_book"
|
|
|
|
|
|
|
|
|
2012-08-02 14:08:39 +00:00
|
|
|
class Tag(models.Model):
|
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
slug = models.SlugField(unique=True)
|
2012-08-10 11:38:18 +00:00
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2012-08-10 11:38:18 +00:00
|
|
|
|
|
|
|
|
2013-08-19 12:50:26 +00:00
|
|
|
class TagM2MTest(models.Model):
|
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
slug = models.SlugField(unique=True)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2013-08-19 12:50:26 +00:00
|
|
|
|
|
|
|
|
2013-08-11 13:23:31 +00:00
|
|
|
class TagIndexed(models.Model):
|
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
slug = models.SlugField(unique=True)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2013-08-11 13:23:31 +00:00
|
|
|
index_together = [["slug", "title"]]
|
|
|
|
|
|
|
|
|
2012-08-18 13:00:42 +00:00
|
|
|
class TagUniqueRename(models.Model):
|
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
slug2 = models.SlugField(unique=True)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2012-08-18 13:00:42 +00:00
|
|
|
db_table = "schema_tag"
|
|
|
|
|
|
|
|
|
2012-08-10 11:38:18 +00:00
|
|
|
class UniqueTest(models.Model):
|
|
|
|
year = models.IntegerField()
|
|
|
|
slug = models.SlugField(unique=False)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2012-08-10 11:38:18 +00:00
|
|
|
unique_together = ["year", "slug"]
|
2013-11-22 22:31:50 +00:00
|
|
|
|
|
|
|
|
2014-07-21 09:50:21 +00:00
|
|
|
class AuthorWithEvenLongerName(models.Model):
|
|
|
|
name = models.CharField(max_length=255)
|
|
|
|
height = models.PositiveIntegerField(null=True, blank=True)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2013-11-22 22:31:50 +00:00
|
|
|
class BookWithLongName(models.Model):
|
2014-07-21 09:50:21 +00:00
|
|
|
author_foreign_key_with_really_long_field_name = models.ForeignKey(AuthorWithEvenLongerName)
|
2013-11-22 22:31:50 +00:00
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 11:25:17 +00:00
|
|
|
apps = new_apps
|
2013-12-22 19:44:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
# Based on tests/reserved_names/models.py
|
|
|
|
@python_2_unicode_compatible
|
|
|
|
class Thing(models.Model):
|
|
|
|
when = models.CharField(max_length=1, primary_key=True)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-27 23:58:18 +00:00
|
|
|
db_table = 'drop'
|
2013-12-22 19:44:49 +00:00
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.when
|