Skip to content

RelatedField (and their subclasses) do not support traversing relationships that can be null #5848

Closed
@gcbirzan

Description

@gcbirzan

This was introduced by #5518, and while the solutions there work on normal fields, RelatedField behaves differently:

try:
return get_attribute(instance, self.source_attrs)
except (KeyError, AttributeError) as exc:

vs

return get_attribute(instance, self.source_attrs)

An example of the problem can be reproduced with https://gist.github.com/gcbirzan/a968facbaf0969f4a9616942de7022dc

A Model1 instance with None for model2 will produce an exception.

I believe that the correct behaviour is for RelatedField.get_attribute to call super.

As a side note, this is very hacky to work around, you'll need to copy paste the code from RelatedField.get_attribute in your class, then call the Field.get_attribute, since obviously super won't work.

If there's some agreement that this is the solution, I can fix it, but I'm not 100% sure (given the reaction on the original ticket) if this is considered a bug.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions