Changeset 8782
- Timestamp:
- 08/31/08 19:49:03 (3 months ago)
- Files:
-
- django/trunk/django/db/backends/__init__.py (modified) (1 diff)
- django/trunk/django/db/backends/mysql/base.py (modified) (1 diff)
- django/trunk/django/db/models/fields/related.py (modified) (2 diffs)
- django/trunk/tests/regressiontests/model_regress/models.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/db/backends/__init__.py
r8646 r8782 72 72 can_use_chunked_reads = True 73 73 uses_savepoints = False 74 # If True, don't use integer foreign keys referring to, e.g., positive 75 # integer primary keys. 76 related_fields_match_type = False 74 77 75 78 class BaseDatabaseOperations(object): django/trunk/django/db/backends/mysql/base.py
r8692 r8782 111 111 empty_fetchmany_value = () 112 112 update_can_self_select = False 113 related_fields_match_type = True 113 114 114 115 class DatabaseOperations(BaseDatabaseOperations): django/trunk/django/db/models/fields/related.py
r8756 r8782 685 685 def contribute_to_related_class(self, cls, related): 686 686 setattr(cls, related.get_accessor_name(), ForeignRelatedObjectsDescriptor(related)) 687 687 688 688 def formfield(self, **kwargs): 689 689 defaults = {'form_class': forms.ModelChoiceField, 'queryset': self.rel.to._default_manager.complex_filter(self.rel.limit_choices_to)} … … 696 696 # points to an AutoField/PositiveIntegerField/PositiveSmallIntegerField, 697 697 # in which case the column type is simply that of an IntegerField. 698 # If the database needs similar types for key fields however, the only 699 # thing we can do is making AutoField an IntegerField. 698 700 rel_field = self.rel.get_related_field() 699 if isinstance(rel_field, (AutoField, PositiveIntegerField, PositiveSmallIntegerField)): 701 if (isinstance(rel_field, AutoField) or 702 (not connection.features.related_fields_match_type and 703 isinstance(rel_field, (PositiveIntegerField, 704 PositiveSmallIntegerField)))): 700 705 return IntegerField().db_type() 701 706 return rel_field.db_type() django/trunk/tests/regressiontests/model_regress/models.py
r8526 r8782 32 32 class Event(models.Model): 33 33 when = models.DateTimeField() 34 35 class Department(models.Model): 36 id = models.PositiveIntegerField(primary_key=True) 37 name = models.CharField(max_length=200) 38 39 def __unicode__(self): 40 return self.name 41 42 class Worker(models.Model): 43 department = models.ForeignKey(Department) 44 name = models.CharField(max_length=200) 45 46 def __unicode__(self): 47 return self.name 34 48 35 49 __test__ = {'API_TESTS': """ … … 96 110 >>> e.get_previous_by_when().when 97 111 datetime.datetime(2000, 1, 1, 6, 1, 1) 112 113 # Check Department and Worker 114 >>> d = Department(id=10, name='IT') 115 >>> d.save() 116 >>> w = Worker(department=d, name='Full-time') 117 >>> w.save() 118 >>> w 119 <Worker: Full-time> 120 98 121 """ 99 122 }
