Skip to content

Commit 1fe60ab

Browse files
committed
Support using _id as alias for primary key field when filtering
1 parent 58824fc commit 1fe60ab

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
- Rework Relation & RelatedList so the return value is still a list instance
55
- Flatten builtin enum.Enum types to their value
66
- Add first, last, earliest, latest to QuerySet and support Meta get_latest_by
7+
- Support using `_id` as alias to the primary key when doing filtering
78

89
# 0.8.0
910

atomdb/sql.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,10 @@ def resolve_member_column(
454454
model = rel_model
455455

456456
# Lookup the member
457-
m = model.members().get(field)
457+
members = model.members()
458+
if field not in members and field == "_id":
459+
field = model.__pk__ # Support lookup using _id for pk
460+
m = members.get(field)
458461
if m is not None:
459462
if m.metadata:
460463
# If the field has a different name assigned use that

tests/test_sql.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,11 @@ async def test_query(db):
534534
await User.objects.delete(name=user.name)
535535
assert len(await User.objects.all()) == 9
536536

537+
# Test mapping _id to pk
538+
u = await User.objects.first()
539+
assert u.id
540+
await User.objects.filter(_id=u.id).count() == 1
541+
537542
# Delete them all
538543
await User.objects.delete(active=True)
539544
assert len(await User.objects.all()) == 0

0 commit comments

Comments
 (0)