#22000 closed Bug (invalid)
'ModelChoiceField' object has no attribute 'to_field_name'
Reported by: | anonymous | Owned by: | nobody |
---|---|---|---|
Component: | Forms | Version: | 1.6 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Hello,
I am getting the error, [ 'ModelChoiceField' object has no attribute 'to_field_name' ],
when I try to use the following model (from an open source library) in the ModelChoiceField with python 2.7.3
This is the model in question.
https://sourcegraph.com/github.com/celery/django-celery/symbols/python/djcelery/models/IntervalSchedule#examples
This is the code that causes the error in a form. (The original code was a form that inherited from the ModelChoiceField, but ModelChoiceField itself also gives the error. )
widgets={'interval': ModelChoiceField( queryset=IntervalSchedule.objects.all(), empty_label=" :-( ")}
The modelform, based on PeriodicTask in which the widget is changed, is called by modelformset_factory.
(from djcelery.models import PeriodicTask, IntervalSchedule )
/usr/local/lib/python2.7/dist-packages/django/forms/models.py in prepare_value
def prepare_value(self, value): if hasattr(value, '_meta'): if self.to_field_name: return value.serializable_value(self.to_field_name) else: return value.pk return super(ModelChoiceField, self).prepare_value(value)
Django Version: 1.6
Exception Type: AttributeError
Exception Value:
'ModelChoiceField' object has no attribute 'to_field_name'
Exception Location: /usr/local/lib/python2.7/dist-packages/django/forms/models.py in prepare_value, line 1115
Python Executable: /usr/bin/python
Python Version: 2.7.3
I do see the to_field_name in the code on https://github.com/django/django/blob/stable/1.6.x/django/forms/models.py but it is initialized on init.
So could this be race condition bug?
(Since I don't get the error with the roughly same code if the widget is not changed. )
(Am not clicking easy pickings due to the possibility of it being a race bug. Getting the to_field_name out of the init and into the class would be easy enough to fix this bug, but if something else is going on... )
Change History (3)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
A model choice field is not a widget, it is not correct to use it in widgets
.
I'm closing this ticket, because it appears to be an issue with your code, not Django. If you need further help customising the form in your code, please see wiki:UseSupportChannels
comment:3 by , 11 years ago
Sorry, I got the link wrong in the previous comment. I meant to link to TicketClosingReasons/UseSupportChannels
Changing the form directly works, but not using a widget.
interval = ModelChoiceField( queryset=IntervalSchedule.objects.all(),initial=PeriodicTask.interval, empty_label="...", required=False)