diff options
Diffstat (limited to 'parts/django/tests/modeltests/custom_pk/models.py')
-rw-r--r-- | parts/django/tests/modeltests/custom_pk/models.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/parts/django/tests/modeltests/custom_pk/models.py b/parts/django/tests/modeltests/custom_pk/models.py new file mode 100644 index 0000000..ff2f2ba --- /dev/null +++ b/parts/django/tests/modeltests/custom_pk/models.py @@ -0,0 +1,42 @@ +# -*- 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 django.conf import settings +from django.db import models, transaction, IntegrityError, DEFAULT_DB_ALIAS + +from fields import MyAutoField + +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 __unicode__(self): + return u"%s %s" % (self.first_name, self.last_name) + +class Business(models.Model): + name = models.CharField(max_length=20, primary_key=True) + employees = models.ManyToManyField(Employee) + class Meta: + verbose_name_plural = 'businesses' + + def __unicode__(self): + return self.name + +class Bar(models.Model): + id = MyAutoField(primary_key=True, db_index=True) + + def __unicode__(self): + return repr(self.pk) + + +class Foo(models.Model): + bar = models.ForeignKey(Bar) + |