﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
37208	db_persist has problem with postgres	Twili Spar		"== Environment:
Python version: 3.13.3
Django version: 6.0.7
psycopg version: 3.2.12
Postgres version: 18.1 

----


== Explain the bug:
Here is my code:


{{{
tmp = models.GeneratedField(
        db_persist=False,  # In here, I've set the column type as virtual
        expression=models.Q(standard_symbol_tmp__isnull=False),
        null=True,
        output_field=models.BooleanField(),
    )
}}}
And when I do `makemigrations` all things are good, but on **migrating**, django says:


{{{
SystemCheckError: System check identified some issues:

ERRORS:
symbol.Symbol.tmp: (fields.E221) PostgreSQL does not support non-persisted GeneratedFields.
        HINT: Set db_persist=True on the field.

}}}

While I know that Postgres supports the `VIRTUAL` and `STORED` generated columns, here is the postgres release note ref:
[https://www.postgresql.org/about/news/postgresql-18-released-3142/]

While the migration file is created and is like:
{{{
class Migration(migrations.Migration):

    # ...rest of the code ...

    operations = [
        migrations.AddField(
            model_name=""symbol"",
            name=""tmp"",
            field=models.GeneratedField(
                db_persist=False,
                expression=models.Q((""standard_symbol_tmp__isnull"", False)),
                null=True,
                output_field=models.BooleanField(),
            ),
        ),
    ]

}}}


And when I set `db_persist` to `True` AND DO NOT TOUCH THE migration file and migrate, all things are good, column creates as VIRTUAL in postgres, NOT STORED.
"	Bug	new	Database layer (models, ORM)	6.0	Normal		db_persist, GeneratedField	Twili Spar	Unreviewed	0	0	0	0	0	0
