2013-12-24 19:25:17 +08:00
|
|
|
from django.apps.registry import Apps
|
2012-06-19 00:32:03 +08:00
|
|
|
from django.db import models
|
|
|
|
|
|
|
|
# Because we want to test creation and deletion of these as separate things,
|
2013-12-24 19:25:17 +08:00
|
|
|
# these models are all inserted into a separate Apps so the main test
|
2013-09-03 23:51:34 +08:00
|
|
|
# runner doesn't migrate them.
|
2013-05-09 22:16:43 +08:00
|
|
|
|
2013-12-24 19:25:17 +08:00
|
|
|
new_apps = Apps()
|
2012-06-19 00:32:03 +08:00
|
|
|
|
|
|
|
|
|
|
|
class Author(models.Model):
|
|
|
|
name = models.CharField(max_length=255)
|
2012-09-08 03:40:59 +08:00
|
|
|
height = models.PositiveIntegerField(null=True, blank=True)
|
2016-06-25 11:25:39 +08:00
|
|
|
weight = models.IntegerField(null=True, blank=True)
|
2018-06-17 14:51:02 +08:00
|
|
|
uuid = models.UUIDField(null=True)
|
2012-06-19 00:32:03 +08:00
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 19:25:17 +08:00
|
|
|
apps = new_apps
|
2017-05-23 23:02:40 +08:00
|
|
|
|
|
|
|
|
2017-05-24 13:25:59 +08:00
|
|
|
class AuthorCharFieldWithIndex(models.Model):
|
|
|
|
char_field = models.CharField(max_length=31, db_index=True)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2017-05-23 23:02:40 +08:00
|
|
|
class AuthorTextFieldWithIndex(models.Model):
|
|
|
|
text_field = models.TextField(db_index=True)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
2012-06-19 00:32:03 +08:00
|
|
|
|
|
|
|
|
2014-10-31 21:08:24 +08: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
|
|
|
|
|
|
|
|
|
2015-01-29 22:14:55 +08:00
|
|
|
class AuthorWithEvenLongerName(models.Model):
|
2014-05-09 01:33:59 +08:00
|
|
|
name = models.CharField(max_length=255)
|
2015-01-29 22:14:55 +08:00
|
|
|
height = models.PositiveIntegerField(null=True, blank=True)
|
2014-05-09 01:33:59 +08:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2017-04-07 21:54:40 +08:00
|
|
|
class AuthorWithIndexedName(models.Model):
|
|
|
|
name = models.CharField(max_length=255, db_index=True)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2012-06-19 00:32:03 +08:00
|
|
|
class Book(models.Model):
|
2015-07-22 22:43:21 +08:00
|
|
|
author = models.ForeignKey(Author, models.CASCADE)
|
2012-08-31 06:11:56 +08:00
|
|
|
title = models.CharField(max_length=100, db_index=True)
|
2012-06-19 00:32:03 +08:00
|
|
|
pub_date = models.DateTimeField()
|
2013-05-09 22:16:43 +08:00
|
|
|
# tags = models.ManyToManyField("Tag", related_name="books")
|
2012-06-19 00:32:03 +08:00
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 19:25:17 +08:00
|
|
|
apps = new_apps
|
2012-08-02 22:08:39 +08:00
|
|
|
|
|
|
|
|
2014-08-09 15:50:00 +08:00
|
|
|
class BookWeak(models.Model):
|
2015-07-22 22:43:21 +08:00
|
|
|
author = models.ForeignKey(Author, models.CASCADE, db_constraint=False)
|
2014-08-09 15:50:00 +08:00
|
|
|
title = models.CharField(max_length=100, db_index=True)
|
|
|
|
pub_date = models.DateTimeField()
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2015-01-29 22:14:55 +08:00
|
|
|
class BookWithLongName(models.Model):
|
2015-07-22 22:43:21 +08:00
|
|
|
author_foreign_key_with_really_long_field_name = models.ForeignKey(
|
|
|
|
AuthorWithEvenLongerName,
|
|
|
|
models.CASCADE,
|
|
|
|
)
|
2015-01-19 22:31:23 +08:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2015-01-29 22:14:55 +08:00
|
|
|
class BookWithO2O(models.Model):
|
2015-07-22 22:43:21 +08:00
|
|
|
author = models.OneToOneField(Author, models.CASCADE)
|
2012-09-08 02:39:22 +08:00
|
|
|
title = models.CharField(max_length=100, db_index=True)
|
|
|
|
pub_date = models.DateTimeField()
|
2014-03-09 07:57:25 +08:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
2015-01-29 22:14:55 +08:00
|
|
|
db_table = "schema_book"
|
2014-03-09 07:57:25 +08:00
|
|
|
|
|
|
|
|
2012-09-08 00:51:11 +08:00
|
|
|
class BookWithSlug(models.Model):
|
2015-07-22 22:43:21 +08:00
|
|
|
author = models.ForeignKey(Author, models.CASCADE)
|
2012-09-08 00:51:11 +08:00
|
|
|
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 19:25:17 +08:00
|
|
|
apps = new_apps
|
2012-09-08 00:51:11 +08:00
|
|
|
db_table = "schema_book"
|
|
|
|
|
|
|
|
|
2015-06-12 14:22:08 +08:00
|
|
|
class BookWithoutAuthor(models.Model):
|
|
|
|
title = models.CharField(max_length=100, db_index=True)
|
|
|
|
pub_date = models.DateTimeField()
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
db_table = "schema_book"
|
|
|
|
|
|
|
|
|
2015-07-16 02:38:10 +08:00
|
|
|
class BookForeignObj(models.Model):
|
|
|
|
title = models.CharField(max_length=100, db_index=True)
|
|
|
|
author_id = models.IntegerField()
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
|
|
|
|
2015-06-02 05:06:54 +08:00
|
|
|
class IntegerPK(models.Model):
|
|
|
|
i = models.IntegerField(primary_key=True)
|
2015-06-02 07:27:28 +08:00
|
|
|
j = models.IntegerField(unique=True)
|
2015-06-02 05:06:54 +08:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
db_table = "INTEGERPK" # uppercase to ensure proper quoting
|
|
|
|
|
|
|
|
|
2015-01-29 22:14:55 +08:00
|
|
|
class Note(models.Model):
|
|
|
|
info = models.TextField()
|
|
|
|
|
2015-04-19 06:05:58 +08:00
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
|
2015-01-29 22:14:55 +08:00
|
|
|
|
2015-05-27 06:18:21 +08:00
|
|
|
class NoteRename(models.Model):
|
|
|
|
detail_info = models.TextField()
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
db_table = "schema_note"
|
|
|
|
|
|
|
|
|
2012-08-02 22:08:39 +08:00
|
|
|
class Tag(models.Model):
|
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
slug = models.SlugField(unique=True)
|
2012-08-10 19:38:18 +08:00
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 19:25:17 +08:00
|
|
|
apps = new_apps
|
2012-08-10 19:38:18 +08:00
|
|
|
|
|
|
|
|
2015-01-29 22:14:55 +08:00
|
|
|
class TagIndexed(models.Model):
|
2013-08-19 20:50:26 +08:00
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
slug = models.SlugField(unique=True)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 19:25:17 +08:00
|
|
|
apps = new_apps
|
2015-01-29 22:14:55 +08:00
|
|
|
index_together = [["slug", "title"]]
|
2013-08-19 20:50:26 +08:00
|
|
|
|
|
|
|
|
2015-01-29 22:14:55 +08:00
|
|
|
class TagM2MTest(models.Model):
|
2013-08-11 21:23:31 +08:00
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
slug = models.SlugField(unique=True)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 19:25:17 +08:00
|
|
|
apps = new_apps
|
2013-08-11 21:23:31 +08:00
|
|
|
|
|
|
|
|
2012-08-18 21:00:42 +08:00
|
|
|
class TagUniqueRename(models.Model):
|
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
slug2 = models.SlugField(unique=True)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-24 19:25:17 +08:00
|
|
|
apps = new_apps
|
2012-08-18 21:00:42 +08:00
|
|
|
db_table = "schema_tag"
|
|
|
|
|
|
|
|
|
2013-12-23 03:44:49 +08:00
|
|
|
# Based on tests/reserved_names/models.py
|
|
|
|
class Thing(models.Model):
|
|
|
|
when = models.CharField(max_length=1, primary_key=True)
|
|
|
|
|
|
|
|
class Meta:
|
2013-12-28 07:58:18 +08:00
|
|
|
db_table = 'drop'
|
2013-12-23 03:44:49 +08:00
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.when
|
2014-12-04 22:11:30 +08:00
|
|
|
|
|
|
|
|
2015-01-29 22:14:55 +08:00
|
|
|
class UniqueTest(models.Model):
|
|
|
|
year = models.IntegerField()
|
|
|
|
slug = models.SlugField(unique=False)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|
|
|
|
unique_together = ["year", "slug"]
|
2016-03-29 16:58:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
class Node(models.Model):
|
|
|
|
node_id = models.AutoField(primary_key=True)
|
|
|
|
parent = models.ForeignKey('self', models.CASCADE, null=True, blank=True)
|
2016-12-18 04:02:57 +08:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
apps = new_apps
|