diff options
Diffstat (limited to 'tests/custom_pk/models.py')
-rw-r--r-- | tests/custom_pk/models.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/custom_pk/models.py b/tests/custom_pk/models.py new file mode 100644 index 0000000000..5ef9b69f0c --- /dev/null +++ b/tests/custom_pk/models.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +""" +14. Using a custom primary key + +By default, Django adds an ``"id"`` field to each model. But you can override +this behavior by explicitly adding ``primary_key=True`` to a field. +""" + +from __future__ import absolute_import, unicode_literals + +from django.db import models + +from .fields import MyAutoField +from django.utils.encoding import python_2_unicode_compatible + + +@python_2_unicode_compatible +class Employee(models.Model): + employee_code = models.IntegerField(primary_key=True, db_column = 'code') + first_name = models.CharField(max_length=20) + last_name = models.CharField(max_length=20) + class Meta: + ordering = ('last_name', 'first_name') + + def __str__(self): + return "%s %s" % (self.first_name, self.last_name) + +@python_2_unicode_compatible +class Business(models.Model): + name = models.CharField(max_length=20, primary_key=True) + employees = models.ManyToManyField(Employee) + class Meta: + verbose_name_plural = 'businesses' + + def __str__(self): + return self.name + +@python_2_unicode_compatible +class Bar(models.Model): + id = MyAutoField(primary_key=True, db_index=True) + + def __str__(self): + return repr(self.pk) + + +class Foo(models.Model): + bar = models.ForeignKey(Bar) + |