redis-om-python
redis-om-python copied to clipboard
When using hashmodel, 'id' appears to be a reserved name?
from redis_om import Field, HashModel, Migrator
from pydantic import PositiveInt, ValidationError
from typing import Optional
class RatingBody(HashModel):
id: PositiveInt = Field(index=True)
name: str
country: str
language: str
code: str
description: Optional[str]
update_ID: PositiveInt
update_date: str
def lambda_handler(event, context):
try:
c_v = RatingBody(
id=1,
name='abcd',
country='usa',
language='en',
code='2134',
description='test value',
update_ID=9876554,
update_date='2022-04-29'
)
c_v.save()
except ValidationError as e:
print(f'validation error: {e}')
Migrator().run()
a = RatingBody.find(RatingBody.id == 1).all()
print ("Breakpoint here")
if __name__ == '__main__':
lambda_handler(None, None)
print ("Done")
Will result in the following error:
pydantic.error_wrappers.ValidationError: 1 validation error for RatingBody
id
field required (type=value_error.missing)
Changing from 'id' to anything else causes the code to work.
It's because RedisModel.from_redis()
intentionally removes id
from fields, so later pyndantic validation fails:
https://github.com/redis/redis-om-python/blob/main/aredis_om/model/model.py#L1211
No clue why so far, didn't find mentions in code/docs
fixed in pull/337.
@simonprickett fix has been merged so we can close this out