From ce47d4ab830bb96fe9325b9ccd077619116fd548 Mon Sep 17 00:00:00 2001 From: Brian Rosner Date: Mon, 1 Sep 2008 22:43:38 +0000 Subject: Fixed #8648 -- Admin no longer ignores to_field. Thanks for the help Karen Tracey and SmileyChris. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8823 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/admin_widgets/models.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'tests/regressiontests/admin_widgets') diff --git a/tests/regressiontests/admin_widgets/models.py b/tests/regressiontests/admin_widgets/models.py index e178a750e3..2bc907557a 100644 --- a/tests/regressiontests/admin_widgets/models.py +++ b/tests/regressiontests/admin_widgets/models.py @@ -5,14 +5,14 @@ from django.core.files.storage import default_storage class Member(models.Model): name = models.CharField(max_length=100) - + def __unicode__(self): return self.name class Band(models.Model): name = models.CharField(max_length=100) members = models.ManyToManyField(Member) - + def __unicode__(self): return self.name @@ -20,10 +20,18 @@ class Album(models.Model): band = models.ForeignKey(Band) name = models.CharField(max_length=100) cover_art = models.FileField(upload_to='albums') - + def __unicode__(self): return self.name +class Inventory(models.Model): + barcode = models.PositiveIntegerField(unique=True) + parent = models.ForeignKey('self', to_field='barcode', blank=True, null=True) + name = models.CharField(blank=False, max_length=20) + + def __unicode__(self): + return self.name + __test__ = {'WIDGETS_TESTS': """ >>> from datetime import datetime >>> from django.utils.html import escape, conditional_escape @@ -84,6 +92,15 @@ True >>> w._has_changed([1, 2], [u'1', u'3']) True +# Check that ForeignKeyRawIdWidget works with fields which aren't related to +# the model's primary key. +>>> apple = Inventory.objects.create(barcode=86, name='Apple') +>>> pear = Inventory.objects.create(barcode=22, name='Pear') +>>> core = Inventory.objects.create(barcode=87, name='Core', parent=apple) +>>> rel = Inventory._meta.get_field('parent').rel +>>> w = ForeignKeyRawIdWidget(rel) +>>> print w.render('test', core.parent_id, attrs={}) + Lookup Apple """ % { 'ADMIN_MEDIA_PREFIX': settings.ADMIN_MEDIA_PREFIX, 'STORAGE_URL': default_storage.url(''), -- cgit v1.3