Skip to content

Commit 82406f0

Browse files
authored
enhancing primary key check to be compatible with sqlmodel (#672)
1 parent 758d9c7 commit 82406f0

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

aredis_om/model/model.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1542,7 +1542,7 @@ def validate_primary_key(cls):
15421542
else:
15431543
field_info = field.field_info
15441544

1545-
if getattr(field_info, "primary_key", None):
1545+
if getattr(field_info, "primary_key", None) is True:
15461546
primary_keys += 1
15471547
if primary_keys == 0:
15481548
raise RedisModelError("You must define a primary key for the model")
@@ -1823,7 +1823,7 @@ def schema_for_fields(cls):
18231823
else:
18241824
field_info = field.field_info
18251825

1826-
if getattr(field_info, "primary_key", None):
1826+
if getattr(field_info, "primary_key", None) is True:
18271827
if issubclass(_type, str):
18281828
redisearch_field = (
18291829
f"{name} TAG SEPARATOR {SINGLE_VALUE_TAG_FIELD_SEPARATOR}"
@@ -2018,7 +2018,7 @@ def schema_for_fields(cls):
20182018
field_info = field.field_info
20192019
else:
20202020
field_info = field
2021-
if getattr(field_info, "primary_key", None):
2021+
if getattr(field_info, "primary_key", None) is True:
20222022
if issubclass(_type, str):
20232023
redisearch_field = f"$.{name} AS {name} TAG SEPARATOR {SINGLE_VALUE_TAG_FIELD_SEPARATOR}"
20242024
else:

tests/test_json_model.py

+13
Original file line numberDiff line numberDiff line change
@@ -1160,6 +1160,18 @@ class TestLiterals(JsonModel):
11601160
assert rematerialized.pk == item.pk
11611161

11621162

1163+
1164+
@py_test_mark_asyncio
1165+
async def test_two_false_pks():
1166+
from pydantic_core import PydanticUndefined as Undefined
1167+
1168+
class SomeModel(JsonModel):
1169+
field1: str = Field(index=True, primary_key=Undefined)
1170+
field2: str = Field(index=True, primary_key=Undefined)
1171+
1172+
SomeModel(field1="foo", field2="bar")
1173+
1174+
@py_test_mark_asyncio
11631175
async def test_child_class_expression_proxy():
11641176
# https://github.com/redis/redis-om-python/issues/669 seeing weird issue with child classes initalizing all their undefined members as ExpressionProxies
11651177
class Model(JsonModel):
@@ -1183,6 +1195,7 @@ class Child(Model):
11831195
assert rematerialized.age != 19
11841196
assert rematerialized.bio is None
11851197

1198+
@py_test_mark_asyncio
11861199
async def test_merged_model_error():
11871200
class Player(EmbeddedJsonModel):
11881201
username: str = Field(index=True)

0 commit comments

Comments
 (0)