Skip to content

Commit cb73083

Browse files
YPCrumbleintgr
andauthored
Add ManyToManyField.m2m_field_name and Model._get_pk_val methods (#2177)
* Add Model._get_pk_val stub. * Add stub for ManyToManyField._m2m_field_name. * Update & cleanup allowlists --------- Co-authored-by: Marti Raudsepp <marti@juffo.org>
1 parent fec994a commit cb73083

File tree

4 files changed

+27
-18
lines changed

4 files changed

+27
-18
lines changed

django-stubs/db/models/base.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,6 @@ class Model(metaclass=ModelBase):
9999
@classmethod
100100
def check(cls, **kwargs: Any) -> list[CheckMessage]: ...
101101
def __getstate__(self) -> dict: ...
102+
def _get_pk_val(self, meta: Options[Self] | None = None) -> str: ...
102103

103104
def model_unpickle(model_id: tuple[str, str] | type[Model]) -> Model: ...

django-stubs/db/models/fields/related.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ class ManyToManyField(RelatedField[Any, Any], Generic[_To, _Through]):
302302
def m2m_db_table(self) -> str: ...
303303
def m2m_column_name(self) -> str: ...
304304
def m2m_reverse_name(self) -> str: ...
305+
def m2m_field_name(self) -> str: ...
305306
def m2m_reverse_field_name(self) -> str: ...
306307
def m2m_target_field_name(self) -> str: ...
307308
def m2m_reverse_target_field_name(self) -> str: ...

scripts/stubtest/allowlist.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,3 +411,28 @@ django.contrib.sessions.base_session.AbstractBaseSession.Meta
411411
# Custom __str__ that we don't want to overcomplicate:
412412
django.forms.utils.RenderableMixin.__str__
413413
django.forms.utils.RenderableMixin.__html__
414+
415+
# Dynamically added in ManyToManyField.contribute_to_class()
416+
django.db.models.ManyToManyField.m2m_db_table
417+
django.db.models.fields.related.ManyToManyField.m2m_db_table
418+
django.contrib.gis.db.models.ManyToManyField.m2m_db_table
419+
420+
# Dynamically added in ManyToManyField.contribute_to_related_class()
421+
django.db.models.ManyToManyField.m2m_column_name
422+
django.db.models.ManyToManyField.m2m_field_name
423+
django.db.models.ManyToManyField.m2m_reverse_field_name
424+
django.db.models.ManyToManyField.m2m_reverse_name
425+
django.db.models.ManyToManyField.m2m_reverse_target_field_name
426+
django.db.models.ManyToManyField.m2m_target_field_name
427+
django.db.models.fields.related.ManyToManyField.m2m_column_name
428+
django.db.models.fields.related.ManyToManyField.m2m_field_name
429+
django.db.models.fields.related.ManyToManyField.m2m_reverse_field_name
430+
django.db.models.fields.related.ManyToManyField.m2m_reverse_name
431+
django.db.models.fields.related.ManyToManyField.m2m_reverse_target_field_name
432+
django.db.models.fields.related.ManyToManyField.m2m_target_field_name
433+
django.contrib.gis.db.models.ManyToManyField.m2m_column_name
434+
django.contrib.gis.db.models.ManyToManyField.m2m_field_name
435+
django.contrib.gis.db.models.ManyToManyField.m2m_reverse_field_name
436+
django.contrib.gis.db.models.ManyToManyField.m2m_reverse_name
437+
django.contrib.gis.db.models.ManyToManyField.m2m_reverse_target_field_name
438+
django.contrib.gis.db.models.ManyToManyField.m2m_target_field_name

scripts/stubtest/allowlist_todo.txt

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -341,12 +341,6 @@ django.contrib.gis.db.models.Manager.__slotnames__
341341
django.contrib.gis.db.models.ManyToManyField.__get__
342342
django.contrib.gis.db.models.ManyToManyField.contribute_to_class
343343
django.contrib.gis.db.models.ManyToManyField.formfield
344-
django.contrib.gis.db.models.ManyToManyField.m2m_column_name
345-
django.contrib.gis.db.models.ManyToManyField.m2m_db_table
346-
django.contrib.gis.db.models.ManyToManyField.m2m_reverse_field_name
347-
django.contrib.gis.db.models.ManyToManyField.m2m_reverse_name
348-
django.contrib.gis.db.models.ManyToManyField.m2m_reverse_target_field_name
349-
django.contrib.gis.db.models.ManyToManyField.m2m_target_field_name
350344
django.contrib.gis.db.models.ManyToManyField.path_infos
351345
django.contrib.gis.db.models.ManyToManyField.reverse_path_infos
352346
django.contrib.gis.db.models.ManyToManyRel.identity
@@ -777,12 +771,6 @@ django.db.models.Manager.__slotnames__
777771
django.db.models.ManyToManyField.__get__
778772
django.db.models.ManyToManyField.contribute_to_class
779773
django.db.models.ManyToManyField.formfield
780-
django.db.models.ManyToManyField.m2m_column_name
781-
django.db.models.ManyToManyField.m2m_db_table
782-
django.db.models.ManyToManyField.m2m_reverse_field_name
783-
django.db.models.ManyToManyField.m2m_reverse_name
784-
django.db.models.ManyToManyField.m2m_reverse_target_field_name
785-
django.db.models.ManyToManyField.m2m_target_field_name
786774
django.db.models.ManyToManyField.path_infos
787775
django.db.models.ManyToManyField.reverse_path_infos
788776
django.db.models.ManyToManyRel.identity
@@ -1005,12 +993,6 @@ django.db.models.fields.related.ForeignObjectRel.path_infos
1005993
django.db.models.fields.related.ManyToManyField.__get__
1006994
django.db.models.fields.related.ManyToManyField.contribute_to_class
1007995
django.db.models.fields.related.ManyToManyField.formfield
1008-
django.db.models.fields.related.ManyToManyField.m2m_column_name
1009-
django.db.models.fields.related.ManyToManyField.m2m_db_table
1010-
django.db.models.fields.related.ManyToManyField.m2m_reverse_field_name
1011-
django.db.models.fields.related.ManyToManyField.m2m_reverse_name
1012-
django.db.models.fields.related.ManyToManyField.m2m_reverse_target_field_name
1013-
django.db.models.fields.related.ManyToManyField.m2m_target_field_name
1014996
django.db.models.fields.related.ManyToManyField.path_infos
1015997
django.db.models.fields.related.ManyToManyField.reverse_path_infos
1016998
django.db.models.fields.related.ManyToManyRel.identity

0 commit comments

Comments
 (0)