MongoEngine / MongoEngine/mongoengine
Lazy Reference to Abstract class attempts to obtain the classes `id_field`
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 4.3k
- Forks
- 1.2k
- Avg merge
- 4h 41m
- Merged PRs (30d)
- 11
Description
This is a similar issue to #837, though pertaining to LazyReferenceFields as opposed to ReferenceFields
The following code should enable you to replicate the issue in mongoengine version 0.18.0
import mongoengine as me
class AbstractExample(me.Document):
meta = {"abstract": True}
class ConcreteExample(AbstractExample):
pass
class Referrer(me.Document):
reference = me.LazyReferenceField(AbstractExample)
Saving a Referrer to the database will trigger a KeyError: id_field.
Replacing the LazyReferenceField with a regular ReferenceField doesn't trigger this exception.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the provided reproduction against mongoengine 0.18.0 and trace the LazyReferenceField save path for an abstract document. Confirm the failure is the KeyError: id_field, then add a regression test showing that saving Referrer with AbstractExample no longer raises it.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- mongodb, python
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100