Skip to content
This repository was archived by the owner on Aug 19, 2025. It is now read-only.

Commit 7baf305

Browse files
author
Micheal Gendy
committed
change id to model pk name
1 parent 3b3257a commit 7baf305

File tree

3 files changed

+21
-38
lines changed

3 files changed

+21
-38
lines changed

orm/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ async def bulk_update(
489489
]
490490
expr = (
491491
self.table.update()
492-
.where(self.table.c.id == sqlalchemy.bindparam("id"))
492+
.where(self.table.c.id == sqlalchemy.bindparam(self.pkname))
493493
.values(
494494
{
495495
field: sqlalchemy.bindparam(field)
@@ -498,7 +498,7 @@ async def bulk_update(
498498
}
499499
)
500500
)
501-
pk_list = [{"id": obj.pk} for obj in objs]
501+
pk_list = [{self.pkname: obj.pk} for obj in objs]
502502
joined_list = [{**pk, **value} for pk, value in zip(pk_list, new_objs)]
503503
await self.database.execute_many(str(expr), joined_list)
504504

tests/test_columns.py

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -199,39 +199,3 @@ async def test_bulk_update():
199199
assert products[1].data == {"foo": 5678}
200200
assert products[0].value == 1234.567
201201
assert products[1].value == 5678.891
202-
203-
204-
async def test_bulk_update_with_relation():
205-
class Album(orm.Model):
206-
registry = models
207-
fields = {
208-
"id": orm.Integer(primary_key=True),
209-
"name": orm.Text(),
210-
}
211-
212-
class Track(orm.Model):
213-
registry = models
214-
fields = {
215-
"id": orm.Integer(primary_key=True),
216-
"name": orm.Text(),
217-
"album": orm.ForeignKey(Album),
218-
}
219-
220-
await models.create_all()
221-
222-
album = await Album.objects.create(name="foo")
223-
album2 = await Album.objects.create(name="bar")
224-
225-
await Track.objects.bulk_create(
226-
[
227-
{"name": "foo", "album": album},
228-
{"name": "bar", "album": album},
229-
]
230-
)
231-
tracks = await Track.objects.all()
232-
for track in tracks:
233-
track.album = album2
234-
await Track.objects.bulk_update(tracks, fields=["album"])
235-
tracks = await Track.objects.all()
236-
assert tracks[0].album.pk == album2.pk
237-
assert tracks[1].album.pk == album2.pk

tests/test_foreignkey.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,3 +278,22 @@ async def test_nullable_foreign_key():
278278

279279
assert member.email == "[email protected]"
280280
assert member.team.pk is None
281+
282+
283+
async def test_bulk_update_with_relation():
284+
album = await Album.objects.create(name="foo")
285+
album2 = await Album.objects.create(name="bar")
286+
287+
await Track.objects.bulk_create(
288+
[
289+
{"name": "foo", "album": album, "position": 1, "title": "foo"},
290+
{"name": "bar", "album": album, "position": 2, "title": "bar"},
291+
]
292+
)
293+
tracks = await Track.objects.all()
294+
for track in tracks:
295+
track.album = album2
296+
await Track.objects.bulk_update(tracks, fields=["album"])
297+
tracks = await Track.objects.all()
298+
assert tracks[0].album.pk == album2.pk
299+
assert tracks[1].album.pk == album2.pk

0 commit comments

Comments
 (0)