I have a form with ModelMultipleChoiceField
on it, and I am getting 'DatabaseError: too many SQL variables'
(using SQLite) when the user picks more than 1000 entries in the selection widget and posts the form.
The problem seems to be the method clean
of ModelMultipleChoiceField
, which tries to select objects from the database simply by the IN
SQL clause (e.g. SELECT * FROM projects WHERE id IN (1,2,3)). When the number of numbers in the IN argument rises over 1000 the too many SQL variables
happens.
I am using the most recent version of Django (1.5.dev17922), though I think it is irrelevant because similar issues happened even with older versions.
I have always worked around this problem by custom temporary models that I used for joins of more complex queries. But more and more it seems to me that, either there already is a systematic solution to this problem that I am missing (which I hope somebody could point out to me), or there at least needs to be a need for it -- how do you address similar situations? -- in which case I can start thinking how to propose something general that could later be incorporated into Django.
Thanks for any suggestions or help.
EDIT: I posted the same question to django-users ML, and quite a fruitful discussion got going; https://groups.google.com/forum/?fromgroups#!topic/django-users/aI7uO49UVRU