Django

Code

Changeset 469

Show
Ignore:
Timestamp:
08/10/05 14:32:38 (3 years ago)
Author:
adrian
Message:

Fixed #81 -- Admin now supports primary_key=True for non-integer fields. Note that you'll have to make a change to your database if you're using a previous Django installation and want to use non-integer primary key fields. See the BackwardsIncompatibleChanges wiki page for info.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/conf/urls/admin.py

    r413 r469  
    5151    ('^(?P<app_label>[^/]+)/(?P<module_name>[^/]+)/$', 'django.views.admin.main.change_list'), 
    5252    ('^(?P<app_label>[^/]+)/(?P<module_name>[^/]+)/add/$', 'django.views.admin.main.add_stage'), 
    53     ('^(?P<app_label>[^/]+)/(?P<module_name>[^/]+)/(?P<object_id>\d+)/$', 'django.views.admin.main.change_stage'), 
    54     ('^(?P<app_label>[^/]+)/(?P<module_name>[^/]+)/(?P<object_id>\d+)/delete/$', 'django.views.admin.main.delete_stage'), 
    55     ('^(?P<app_label>[^/]+)/(?P<module_name>[^/]+)/(?P<object_id>\d+)/history/$', 'django.views.admin.main.history'), 
    5653    ('^(?P<app_label>[^/]+)/(?P<module_name>[^/]+)/jsvalidation/$', 'django.views.admin.jsvalidation.jsvalidation'), 
     54    ('^(?P<app_label>[^/]+)/(?P<module_name>[^/]+)/(?P<object_id>.+)/history/$', 'django.views.admin.main.history'), 
     55    ('^(?P<app_label>[^/]+)/(?P<module_name>[^/]+)/(?P<object_id>.+)/delete/$', 'django.views.admin.main.delete_stage'), 
     56    ('^(?P<app_label>[^/]+)/(?P<module_name>[^/]+)/(?P<object_id>.+)/$', 'django.views.admin.main.change_stage'), 
    5757) 
    5858urlpatterns = patterns('', *urlpatterns) 
  • django/trunk/django/core/meta/fields.py

    r462 r469  
    180180        if self.unique_for_year: 
    181181            params['validator_list'].append(getattr(manipulator, 'isUnique%sFor%s' % (self.name, self.unique_for_year))) 
    182         if self.unique
     182        if self.unique or (self.primary_key and not rel)
    183183            params['validator_list'].append(curry(manipulator_validator_unique, self, opts, manipulator)) 
    184184 
  • django/trunk/django/core/meta/__init__.py

    r462 r469  
    13391339        self.obj_key = obj_key 
    13401340        try: 
    1341             self.original_object = opts.get_model_module().get_object(**{'%s__exact' % opts.pk.name: obj_key}
     1341            self.original_object = opts.get_model_module().get_object(pk=obj_key
    13421342        except ObjectDoesNotExist: 
    13431343            # If the object doesn't exist, this might be a manipulator for a 
     
    13591359    self.fields = [] 
    13601360    for f in opts.fields + opts.many_to_many: 
    1361         if f.editable and (not f.rel or not f.rel.edit_inline): 
     1361        if f.editable and not (f.primary_key and change) and (not f.rel or not f.rel.edit_inline): 
    13621362            self.fields.extend(f.get_manipulator_fields(opts, self, change)) 
    13631363 
  • django/trunk/django/models/auth.py

    r388 r469  
    248248        meta.ForeignKey(User), 
    249249        meta.ForeignKey(core.ContentType, name='content_type_id', rel_name='content_type', blank=True, null=True), 
    250         meta.IntegerField('object_id', blank=True, null=True), 
     250        meta.TextField('object_id', blank=True, null=True), 
    251251        meta.CharField('object_repr', maxlength=200), 
    252252        meta.PositiveSmallIntegerField('action_flag'), 
  • django/trunk/django/views/admin/main.py

    r468 r469  
    720720            t.append('<label for="%s"%s>%s:</label> ' % (label_name, class_names and ' class="%s"' % ' '.join(class_names) or '', capfirst(field.verbose_name))) 
    721721            t.append(_get_admin_field_form_widget(field, name_prefix, rel, add, change)) 
     722        if change and field.primary_key: 
     723            t.append('{{ %soriginal.%s }}' % ((rel and name_prefix or ''), field.name)) 
    722724        if change and use_raw_id_admin(field): 
    723725            obj_repr = '%soriginal.get_%s|truncatewords:"14"' % (rel and name_prefix or '', field.rel.name)