mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #9494 -- Ensure the foreign key in an inline formset is always present on the forms. Thanks Fugazi for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@9326 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -539,6 +539,13 @@ def inlineformset_factory(parent_model, model, form=ModelForm, | ||||
|     # enforce a max_num=1 when the foreign key to the parent model is unique. | ||||
|     if fk.unique: | ||||
|         max_num = 1 | ||||
|     if fields is not None: | ||||
|         fields = list(fields) | ||||
|         fields.append(fk.name) | ||||
|     else: | ||||
|         # get all the fields for this model that will be generated. | ||||
|         fields = fields_for_model(model, fields, exclude, formfield_callback).keys() | ||||
|         fields.append(fk.name) | ||||
|     kwargs = { | ||||
|         'form': form, | ||||
|         'formfield_callback': formfield_callback, | ||||
|   | ||||
| @@ -696,6 +696,21 @@ False | ||||
| >>> formset.errors | ||||
| [{'__all__': [u'Revision with this Repository and Revision already exists.']}] | ||||
|  | ||||
| # unique_together with inlineformset_factory with overridden form fields | ||||
| # Also see #9494 | ||||
|  | ||||
| >>> FormSet = inlineformset_factory(Repository, Revision, fields=('revision',), extra=1) | ||||
| >>> data = { | ||||
| ...     'revision_set-TOTAL_FORMS': '1', | ||||
| ...     'revision_set-INITIAL_FORMS': '0', | ||||
| ...     'revision_set-0-repository': repository.pk, | ||||
| ...     'revision_set-0-revision': '146239817507f148d448db38840db7c3cbf47c76', | ||||
| ...     'revision_set-0-DELETE': '', | ||||
| ... } | ||||
| >>> formset = FormSet(data, instance=repository) | ||||
| >>> formset.is_valid() | ||||
| False | ||||
|  | ||||
| # Use of callable defaults (see bug #7975). | ||||
|  | ||||
| >>> person = Person.objects.create(name='Ringo') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user