Fixed #12024: Changed admin code to avoid raising an exception when a field listed
in raw_id_fields has limit_choices_to specified as a Q object. Tweaked a test to trigger the condition and verify the fix. Finally, documented that limit_choices_to specified as a Q object has no effect on the choices available for fields listed in raw_id_fields, and removed another incorrect note that claimed limit_choices_to had no effect on inlines in the admin. git-svn-id: http://code.djangoproject.com/svn/django/trunk@12728 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
fa3b4a47ef
commit
f2bc4dd0a9
|
@ -133,7 +133,7 @@ class ForeignKeyRawIdWidget(forms.TextInput):
|
||||||
|
|
||||||
def base_url_parameters(self):
|
def base_url_parameters(self):
|
||||||
params = {}
|
params = {}
|
||||||
if self.rel.limit_choices_to:
|
if self.rel.limit_choices_to and hasattr(self.rel.limit_choices_to, 'items'):
|
||||||
items = []
|
items = []
|
||||||
for k, v in self.rel.limit_choices_to.items():
|
for k, v in self.rel.limit_choices_to.items():
|
||||||
if isinstance(v, list):
|
if isinstance(v, list):
|
||||||
|
|
|
@ -872,10 +872,10 @@ define the details of how the relation works.
|
||||||
current date/time to be chosen.
|
current date/time to be chosen.
|
||||||
|
|
||||||
Instead of a dictionary this can also be a :class:`~django.db.models.Q`
|
Instead of a dictionary this can also be a :class:`~django.db.models.Q`
|
||||||
object for more :ref:`complex queries <complex-lookups-with-q>`.
|
object for more :ref:`complex queries <complex-lookups-with-q>`. However,
|
||||||
|
if ``limit_choices_to`` is a :class:`~django.db.models.Q` object then it
|
||||||
``limit_choices_to`` has no effect on the inline FormSets that are created
|
will only have an effect on the choices available in the admin when the
|
||||||
to display related objects in the admin.
|
field is not listed in ``raw_id_fields`` in the ``ModelAdmin`` for the model.
|
||||||
|
|
||||||
.. attribute:: ForeignKey.related_name
|
.. attribute:: ForeignKey.related_name
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ class Inventory(models.Model):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
class Event(models.Model):
|
class Event(models.Model):
|
||||||
band = models.ForeignKey(Band)
|
band = models.ForeignKey(Band, limit_choices_to=models.Q(pk__gt=0))
|
||||||
start_date = models.DateField(blank=True, null=True)
|
start_date = models.DateField(blank=True, null=True)
|
||||||
start_time = models.TimeField(blank=True, null=True)
|
start_time = models.TimeField(blank=True, null=True)
|
||||||
description = models.TextField(blank=True)
|
description = models.TextField(blank=True)
|
||||||
|
|
Loading…
Reference in New Issue