Index: django/newforms/models.py
===================================================================
--- django/newforms/models.py	(revision 6431)
+++ django/newforms/models.py	(working copy)
@@ -66,7 +66,7 @@
         return save_instance(self, instance, fields, fail_message, commit)
     return save
 
-def form_for_model(model, form=BaseForm, fields=None, formfield_callback=lambda f: f.formfield()):
+def form_for_model(model, form=BaseForm, fields=None, queryset=None, formfield_callback=lambda f, **kwargs: f.formfield(**kwargs)):
     """
     Returns a Form class for the given Django model class.
 
@@ -76,6 +76,7 @@
     determining the formfield for a given database field. It's a callable that
     takes a database Field instance and returns a form Field instance.
     """
+    from django.db.models.fields.related import ManyToManyField
     opts = model._meta
     field_list = []
     for f in opts.fields + opts.many_to_many:
@@ -83,7 +84,10 @@
             continue
         if fields and not f.name in fields:
             continue
-        formfield = formfield_callback(f)
+        if isinstance(f, ManyToManyField) and queryset is not None:
+            formfield = formfield_callback(f, queryset=queryset)
+        else:
+            formfield = formfield_callback(f)
         if formfield:
             field_list.append((f.name, formfield))
     base_fields = SortedDictFromList(field_list)
