PageRenderTime 30ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/modeltests/custom_pk/models.py

https://code.google.com/p/mango-py/
Python | 42 lines | 38 code | 0 blank | 4 comment | 0 complexity | ab8795bdce0daa8d52373f50f9f5870c MD5 | raw file
Possible License(s): BSD-3-Clause
  1. # -*- coding: utf-8 -*-
  2. """
  3. 14. Using a custom primary key
  4. By default, Django adds an ``"id"`` field to each model. But you can override
  5. this behavior by explicitly adding ``primary_key=True`` to a field.
  6. """
  7. from django.conf import settings
  8. from django.db import models, transaction, IntegrityError, DEFAULT_DB_ALIAS
  9. from fields import MyAutoField
  10. class Employee(models.Model):
  11. employee_code = models.IntegerField(primary_key=True, db_column = 'code')
  12. first_name = models.CharField(max_length=20)
  13. last_name = models.CharField(max_length=20)
  14. class Meta:
  15. ordering = ('last_name', 'first_name')
  16. def __unicode__(self):
  17. return u"%s %s" % (self.first_name, self.last_name)
  18. class Business(models.Model):
  19. name = models.CharField(max_length=20, primary_key=True)
  20. employees = models.ManyToManyField(Employee)
  21. class Meta:
  22. verbose_name_plural = 'businesses'
  23. def __unicode__(self):
  24. return self.name
  25. class Bar(models.Model):
  26. id = MyAutoField(primary_key=True, db_index=True)
  27. def __unicode__(self):
  28. return repr(self.pk)
  29. class Foo(models.Model):
  30. bar = models.ForeignKey(Bar)