#35224: Make GenericForeignKey a subclass of Field
-------------------------------------+-------------------------------------
     Reporter:  Adam Johnson         |                    Owner:  nobody
         Type:                       |                   Status:  assigned
  Cleanup/optimization               |
    Component:                       |                  Version:  dev
  contrib.contenttypes               |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Adam Johnson):

 * summary:  Make GenericForeignKey subclass Field => Make GenericForeignKey
     a subclass of Field


Old description:

> When introduced in bca5327b21eb2e3ee18292cbe532d6d0071201d8,
> GenericForeignKey was created as its own class. Since then, it has grown
> to resemble a field, particularly in
> fb48eb05816b1ac87d58696cdfe48be18c901f16.
>
> GenericForeignKey *not* being a `Field` leads to several issues:
> 1. It is added as a “field” and returned by `Model._meta.get_fields()`, a
> type confusion [https://github.com/typeddjango/django-
> stubs/blob/5a8e7b3855ea6f7be2b2ab928d02eff9a748d917/django-
> stubs/db/models/options.pyi#L122-L124 reflected in django-stubs].
> 2. It duplicates code, such as `_check_field_name()`.
> 3. It misses methods like `__repr__()`.
>
> I think we should make it a subclass of `Field`.

New description:

 When introduced in bca5327b21eb2e3ee18292cbe532d6d0071201d8,
 GenericForeignKey was created as its own class. Since then, it has grown
 to resemble a field, particularly in
 fb48eb05816b1ac87d58696cdfe48be18c901f16.

 GenericForeignKey *not* being a `Field` leads to several issues:
 1. It is added as a “field” and returned by `Model._meta.get_fields()`, a
 type confusion [https://github.com/typeddjango/django-
 stubs/blob/5a8e7b3855ea6f7be2b2ab928d02eff9a748d917/django-
 stubs/db/models/options.pyi#L122-L124 reflected in django-stubs].
 2. It duplicates code, such as `_check_field_name()`.
 3. It misses methods like `__repr__()`.

 I think we should make it a subclass of `Field`.

 (`GenericRelation` has always been a subclass of `Field`.)

--
-- 
Ticket URL: <https://code.djangoproject.com/ticket/35224#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018db4218f72-e6577486-c966-4b89-b197-44ae4287b9cc-000000%40eu-central-1.amazonses.com.

Reply via email to