Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#21212 closed Cleanup/optimization (fixed)

OneToOneField reference does not document the "reverse" name

Reported by: bjb@… Owned by: schacki
Component: Documentation Version: master
Severity: Normal Keywords: OneToOneField, reverse
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: yes UI/UX: no

Description

https://docs.djangoproject.com/en/dev/ref/models/fields/#onetoonefield

Says OneToOneField is like ForeignKey, and does not name the reverse attribute.

ForeignKey states that the reverse attribute is called <othermodel>_set and can refer to multiple models. The OneToOneField documentation says the reverse attribute returns a single object, but doesn't say what the reverse name is (surely not <othermodel>_set? - but if not that, then what?)

This is true for 1.5 and dev documentation - probably true for other versions as well.

It would also be nice it if explicitly stated that an instance of the other model can exist without having an instance of the model that refers to it with OneToOneField. Eg, if you have:

Place

Restaurant

place = OneToOneField (Place)

Then you can have a place record without a Restaurant record, but you cannot have a Restaurant record without a Place record. This is alluded to in the Place/Restaurant example elsewhere https://docs.djangoproject.com/en/dev/topics/db/examples/one_to_one/, but could be stated in the OneToOneField documentation.

This may be related to #10227. But until any change are implemented, I'm for documenting the actual behaviour.

Change History (7)

comment:1 Changed 3 years ago by Tim Graham

Easy pickings: set
Triage Stage: UnreviewedAccepted
Version: 1.5master

The reverse attribute is just <othermodel> (lowercased). We can also mention the name can be customized with related_name (just like ForeignKey).

comment:2 Changed 3 years ago by Simon Charette

#21216 is fixing an issue with hidden OneToOneField reverse descriptor that should unify related_name across all related fields.

comment:3 Changed 3 years ago by Tim Graham

Has patch: set
Patch needs improvement: set

PR (needs some improvements).

comment:4 Changed 3 years ago by schacki

Owner: changed from nobody to schacki
Status: newassigned

comment:5 Changed 3 years ago by Tim Graham <timograham@…>

Resolution: fixed
Status: assignedclosed

In f8632572ad84b05256423841cee6335490ba0698:

Fixed #21212 -- Documented the reverse name for OneToOneField.

Thanks bjb at credil.org for the report.

comment:6 Changed 3 years ago by Tim Graham <timograham@…>

In f198abc7e4f0ac4b2d7e1aa6e860ffb2e491810a:

[1.6.x] Fixed #21212 -- Documented the reverse name for OneToOneField.

Thanks bjb at credil.org for the report.

Backport of f8632572ad from master

comment:7 Changed 3 years ago by Tim Graham <timograham@…>

In 8ffa99ccb6173e6dd53a83204933d99a9a6748a3:

[1.5.x] Fixed #21212 -- Documented the reverse name for OneToOneField.

Thanks bjb at credil.org for the report.

Backport of f8632572ad from master

Note: See TracTickets for help on using tickets.
Back to Top