Skip to content

Commit

Permalink
[5.0.x] Refs #35359 -- Fixed OperationTests.test_add_generate_field()…
Browse files Browse the repository at this point in the history
… test on PostgreSQL.

Concat() in Django 5.0 is not immutable on PostgreSQL and cannot be used
in GeneratedField, see 6364b6e.
  • Loading branch information
sarahboyce authored and nessita committed May 4, 2024
1 parent 59c3f8a commit ac9e18f
Showing 1 changed file with 7 additions and 13 deletions.
20 changes: 7 additions & 13 deletions tests/migrations/test_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from django.db.migrations.state import ModelState, ProjectState
from django.db.models import F
from django.db.models.expressions import Value
from django.db.models.functions import Abs, Concat, Pi
from django.db.models.functions import Abs, Pi
from django.db.transaction import atomic
from django.test import (
SimpleTestCase,
Expand Down Expand Up @@ -1389,18 +1389,18 @@ def test_add_generate_field(self):
"Pony",
fields=[
("id", models.AutoField(primary_key=True)),
("name", models.CharField(max_length=20)),
("pink", models.IntegerField()),
(
"rider",
models.ForeignKey(
f"{app_label}.Rider", on_delete=models.CASCADE
),
),
(
"name_and_id",
"pink_plus_rider",
models.GeneratedField(
expression=Concat(("name"), ("rider_id")),
output_field=models.TextField(),
expression=F("pink") + F("rider_id"),
output_field=models.IntegerField(),
db_persist=True,
),
),
Expand All @@ -1411,14 +1411,8 @@ def test_add_generate_field(self):
Pony = project_state.apps.get_model(app_label, "Pony")
Rider = project_state.apps.get_model(app_label, "Rider")
rider = Rider.objects.create()
pony = Pony.objects.create(name="pony", rider=rider)
self.assertEqual(pony.name_and_id, str(pony.name) + str(rider.id))

new_rider = Rider.objects.create()
pony.rider = new_rider
pony.save()
pony.refresh_from_db()
self.assertEqual(pony.name_and_id, str(pony.name) + str(new_rider.id))
pony = Pony.objects.create(pink=3, rider=rider)
self.assertEqual(pony.pink_plus_rider, 3 + rider.id)

def test_add_charfield(self):
"""
Expand Down

0 comments on commit ac9e18f

Please sign in to comment.