Using reverse relationship to update a key #470
Answered
by
igormorgado
igormorgado
asked this question in
Q&A
-
|
I'm trying to update a value using a reverse relationship, but the object isn't being saved. Is that achievable? Bellow a snippet to reproduce the issue: from typing import Optional, List
import ormar as orm
import databases
import sqlalchemy
DATABASE_URL = 'sqlite:///db.sqlite'
database = databases.Database(DATABASE_URL)
metadata = sqlalchemy.MetaData()
class BaseMeta(orm.ModelMeta):
metadata = metadata
database = database
class User(orm.Model):
id: int = orm.Integer(primary_key=True)
username: str = orm.String(max_length=32, unique=True, index=True)
email: str = orm.String(max_length=32, unique=True, index=True)
password: str = orm.String(max_length=32)
class Meta(BaseMeta):
tablename = "users"
class Account(orm.Model):
id: int = orm.Integer(primary_key=True)
address: Optional[str] = orm.String(max_length=32, nullable=True)
user: User = orm.ForeignKey(User)
class Meta(BaseMeta):
tablename = "accounts"
async def create_db():
engine = sqlalchemy.create_engine(DATABASE_URL)
await database.connect()
metadata.drop_all(engine)
metadata.create_all(engine)
return metadata
async def disconnect_db():
await database.disconnect()
async def tests():
user_a = await User.objects.create(username='Usera', password='secret', email='usera@mail.com')
account_a = await Account.objects.create(address='0x123456', user=user_a)
user_db = await User.objects.select_related("accounts").get()
assert user_db.accounts[0].address == '0x123456'
# Updating using a reverse relationship
user_db.accounts[0].address = '0x11111'
assert user_db.accounts[0].address == '0x11111'
await user_db.update()
account_updated = await Account.objects.select_all().get()
assert account_updated.address == '0x11111'
async def main():
await create_db()
await tests()
await disconnect_db()
if __name__ == "__main__":
import asyncio
asyncio.run(main()) |
Beta Was this translation helpful? Give feedback.
Answered by
igormorgado
Dec 4, 2021
Replies: 1 comment
-
|
Just after post this question, I had an idea to update the reverse relation model. And it works. To update the reverse relation just After change the address. |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
igormorgado
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just after post this question, I had an idea to update the reverse relation model. And it works.
To update the reverse relation just
After change the address.