Skip to content

Commit 6e5557a

Browse files
committed
make primary key programmable
Signed-off-by: wiseaidev <[email protected]>
1 parent a00a68b commit 6e5557a

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

aredis_om/model/model.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,8 +1105,8 @@ class Config:
11051105
extra = "allow"
11061106

11071107
def __init__(__pydantic_self__, **data: Any) -> None:
1108-
super().__init__(**data)
11091108
__pydantic_self__.validate_primary_key()
1109+
super().__init__(**data)
11101110

11111111
def __lt__(self, other):
11121112
"""Default sort: compare primary key of models."""
@@ -1166,7 +1166,9 @@ def validate_primary_key(cls):
11661166
primary_keys += 1
11671167
if primary_keys == 0:
11681168
raise RedisModelError("You must define a primary key for the model")
1169-
elif primary_keys > 1:
1169+
elif primary_keys == 2:
1170+
cls.__fields__.pop('pk')
1171+
elif primary_keys > 2:
11701172
raise RedisModelError("You must define only one primary key for a model")
11711173

11721174
@classmethod

tests/test_hash_model.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class Order(BaseHashModel):
4646
created_on: datetime.datetime
4747

4848
class Member(BaseHashModel):
49-
id: int = Field(index=True)
49+
id: int = Field(index=True, primary_key=True)
5050
first_name: str = Field(index=True)
5151
last_name: str = Field(index=True)
5252
email: str = Field(index=True)
@@ -445,7 +445,7 @@ async def test_saves_model_and_creates_pk(m):
445445
# Save a model instance to Redis
446446
await member.save()
447447

448-
member2 = await m.Member.get(member.pk)
448+
member2 = await m.Member.get(pk=member.id)
449449
assert member2 == member
450450

451451

@@ -495,7 +495,7 @@ async def test_delete(m):
495495
)
496496

497497
await member.save()
498-
response = await m.Member.delete(member.pk)
498+
response = await m.Member.delete(pk=member.id)
499499
assert response == 1
500500

501501

@@ -588,8 +588,8 @@ async def test_saves_many(m):
588588
result = await m.Member.add(members)
589589
assert result == [member1, member2]
590590

591-
assert await m.Member.get(pk=member1.pk) == member1
592-
assert await m.Member.get(pk=member2.pk) == member2
591+
assert await m.Member.get(pk=member1.id) == member1
592+
assert await m.Member.get(pk=member2.id) == member2
593593

594594

595595
@py_test_mark_asyncio
@@ -618,14 +618,14 @@ async def test_delete_many(m):
618618
result = await m.Member.delete_many(members)
619619
assert result == 2
620620
with pytest.raises(NotFoundError):
621-
await m.Member.get(pk=member1.pk)
621+
await m.Member.get(pk=member1.id)
622622

623623

624624
@py_test_mark_asyncio
625625
async def test_updates_a_model(members, m):
626626
member1, member2, member3 = members
627627
await member1.update(last_name="Smith")
628-
member = await m.Member.get(member1.pk)
628+
member = await m.Member.get(member1.id)
629629
assert member.last_name == "Smith"
630630

631631

0 commit comments

Comments
 (0)