﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
21615	contenttypes/generic.py regression from 1.6 --> 1.6.1	kz26	nobody	"Model:

{{{
class Post(models.Model):
	class Meta:
		ordering = ['-modified']
	eid = models.CharField(max_length=40, blank=True, db_index=True)
	user = models.ForeignKey(settings.AUTH_USER_MODEL)
	school = models.ForeignKey(School)
	title = models.CharField(max_length=255, validators=[MinLengthValidator(5)])
	category = models.CharField(max_length=3, choices=ORIENTATION_CHOICES)
	affiliation = models.CharField(max_length=3, choices=AFFILIATION_CHOICES)
	age = models.CharField(max_length=255, help_text='Use a comma-separated list to enter more than one age, e.g. for couples and groups')
	external_replies = models.BooleanField(default=True)
	message = models.TextField()
	date = models.DateTimeField(default=timezone.now)
	modified = models.DateTimeField(null=True, blank=True)
	deleted = models.BooleanField(default=False)
	expiration = models.DateTimeField()
	replied = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name=""+"")
	files = generic.GenericRelation(UploadedFile)
}}}

ModelForm:

{{{
class PostForm(forms.ModelForm):
	class Meta:
		model = Post
		fields = ('title', 'affiliation', 'category', 'age', 'external_replies', 'message', 'files')

	message = HTMLField(widget=CKEditorArea)
	files = forms.FileField(required=False, validators=[validate_filesize, validate_mm_filetype])
}}}

View:

{{{
class EditPost(UpdateView):
	model = Post
	form_class = PostForm
	template_name = ""posts/new_edit_post.html""

	@transaction.atomic
	def form_valid(self, form):
		response = super(EditPost, self).form_valid(form)
		for f in self.request.FILES.getlist('files')[:settings.MAX_UPLOAD_COUNT - self.object.files.all().count()]:
			UploadedFile.objects.create(content_object=self.object, file=f)
		self.object.modified = timezone.now()
		self.object.save()
		return response
}}}

The edit view works fine in Django 1.6, but after upgrading to 1.6.1 I get the following stacktrace:

{{{
Traceback (most recent call last):

  File ""/home/twosb/lib/python2.7/site-packages/django/core/handlers/base.py"", line 114, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)

  File ""/home/twosb/lib/python2.7/site-packages/django/views/generic/base.py"", line 69, in view
    return self.dispatch(request, *args, **kwargs)

  File ""/home/twosb/lib/python2.7/site-packages/django/utils/decorators.py"", line 29, in _wrapper
    return bound_func(*args, **kwargs)

  File ""/home/twosb/lib/python2.7/site-packages/django/contrib/auth/decorators.py"", line 22, in _wrapped_view
    return view_func(request, *args, **kwargs)

  File ""/home/twosb/lib/python2.7/site-packages/django/utils/decorators.py"", line 25, in bound_func
    return func(self, *args2, **kwargs2)

  File ""/home/twosb/app/twosb/posts/views.py"", line 141, in dispatch
    response = super(EditPost, self).dispatch(request, *args, **kwargs)

  File ""/home/twosb/lib/python2.7/site-packages/django/views/generic/base.py"", line 87, in dispatch
    return handler(request, *args, **kwargs)

  File ""/home/twosb/lib/python2.7/site-packages/django/views/generic/edit.py"", line 228, in post
    return super(BaseUpdateView, self).post(request, *args, **kwargs)

  File ""/home/twosb/lib/python2.7/site-packages/django/views/generic/edit.py"", line 171, in post
    return self.form_valid(form)

  File ""/home/twosb/lib/python2.7/site-packages/django/db/transaction.py"", line 339, in inner
    return func(*args, **kwargs)

  File ""/home/twosb/app/twosb/posts/views.py"", line 148, in form_valid
    response = super(EditPost, self).form_valid(form)

  File ""/home/twosb/lib/python2.7/site-packages/django/views/generic/edit.py"", line 147, in form_valid
    self.object = form.save()

  File ""/home/twosb/lib/python2.7/site-packages/django/forms/models.py"", line 446, in save
    construct=False)

  File ""/home/twosb/lib/python2.7/site-packages/django/forms/models.py"", line 100, in save_instance
    save_m2m()

  File ""/home/twosb/lib/python2.7/site-packages/django/forms/models.py"", line 96, in save_m2m
    f.save_form_data(instance, cleaned_data[f.name])

  File ""/home/twosb/lib/python2.7/site-packages/django/db/models/fields/__init__.py"", line 516, in save_form_data
    setattr(instance, self.name, data)

  File ""/home/twosb/lib/python2.7/site-packages/django/contrib/contenttypes/generic.py"", line 292, in __set__
    for obj in value:

TypeError: 'NoneType' object is not iterable
}}}

"	Bug	closed	contrib.contenttypes	1.6	Release blocker	wontfix	form modelform		Accepted	0	0	0	0	0	0
