﻿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
34001	ForeignKey.formfield(): allow override for all kwargs	James Pic	nobody	"Proposing to change ForeignKey.formfield() to allow overriding form_class and all other defaults like with other fields such as fields.UUIDField, we can optimize the code at the same time.


{{{
commit ec0cae2e2d0bc6ae31cf39e7c4a067810cff8fb4 (HEAD -> main, origin/formfield)
Author: jpic <jpic@yourlabs.org>
Date:   Sat Sep 10 00:47:17 2022 +0200

    ForeignKey.formfield(): set defaults if necessary (allow override)

    Allow to override defaults used by formfield() in ForeignKey subclasses.

diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index 63ed2ff4c7..f9c6ff3be8 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -1164,15 +1164,21 @@ class ForeignKey(ForeignObject):
                 ""its related model %r has not been loaded yet""
                 % (self.name, self.remote_field.model)
             )
-        return super().formfield(
-            **{
-                ""form_class"": forms.ModelChoiceField,
-                ""queryset"": self.remote_field.model._default_manager.using(using),
-                ""to_field_name"": self.remote_field.field_name,
-                **kwargs,
-                ""blank"": self.blank,
-            }
-        )
+
+        if ""form_class"" not in kwargs:
+            kwargs[""form_class""] = forms.ModelChoiceField
+
+        if ""queryset"" not in kwargs:
+            kwargs[""queryset""] = self.remote_field.model._default_manager.using(
+                using)
+
+        if ""to_field_name"" not in kwargs:
+            kwargs[""to_field_name""] = self.remote_field.field_name
+
+        if ""blank"" not in kwargs:
+            kwargs[""blank""] = self.blank
+
+        return super().formfield(**kwargs)
}}}"	Cleanup/optimization	closed	Database layer (models, ORM)	4.0	Normal	invalid		James Pic	Unreviewed	0	0	0	0	0	0
