﻿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
35640	ModelMultipleChoiceField fail when the foreignkey remote model is a child class of anohter model	Omar BENHAMID		"== The issue 

When a child model is used as a foreign key, forms with ModelMultipleChoiceField (not setting to_field_name) will systematically fail to validate submited values.


== Reproduction

models.py
{{{
class A(models.Model):
      pass

class B(A):
      pass

class C(models.Model):
      fkfield = models.ForeignKey(B, on_delete=models.CASCADE)
}}}

Create form with MultipleChoiceField of the foreignkey fkfield and it will systematically fail to validate.

== Reason

ModelMultipleChoiceField  uses value.pk in prepare_value to generate choices but uses ""to_field_name"" in _check_data for validation.
default to_field_name is by default related_field.field_name which is ""<parent>_ptr"" in the case of inheriance child models, which points to the parent itself (not the pk).

ModelMultipleChoiceField fail when the foreignkey remote model is a child class of anohter model
== Workaround

Use to_field_name = 'pk' when ModelMultipleChoiceField  is created.

== Proposed fix

Use PK in validation like in generation of choices.

Spotted in 3.2"	Bug	closed	Forms	3.2	Normal	invalid		Omar BENHAMID	Unreviewed	1	0	0	0	0	0
