<feed xmlns='http://www.w3.org/2005/Atom'>
<title>django.git/tests/migrations, branch main</title>
<subtitle>django
</subtitle>
<id>http://cgit.adnoto.dev/django.git/atom?h=main</id>
<link rel='self' href='http://cgit.adnoto.dev/django.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/'/>
<updated>2026-03-14T18:11:27Z</updated>
<entry>
<title>Refs #12529, #22325 -- Fixed ExecutorTests.test_custom_user isolation.</title>
<updated>2026-03-14T18:11:27Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2026-03-14T18:11:27Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=6b90f8a8d6994dc62cd91dde911fe56ec3389494'/>
<id>urn:sha1:6b90f8a8d6994dc62cd91dde911fe56ec3389494</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed #12529 -- Fixed migrate --run-syncdb crash for existing model with truncated db_table names.</title>
<updated>2026-03-08T09:44:56Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2026-03-08T09:44:56Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=a5c49174b96302f39682cce48f82da67b3b08351'/>
<id>urn:sha1:a5c49174b96302f39682cce48f82da67b3b08351</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #36652, #36936 -- Improved path manipulation in a migration test launching a subprocess.</title>
<updated>2026-02-25T22:02:00Z</updated>
<author>
<name>pmppk</name>
<email>prosenbl@gmail.com</email>
</author>
<published>2026-02-25T22:02:00Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=f991a1883889a520679fe41112281435581211e1'/>
<id>urn:sha1:f991a1883889a520679fe41112281435581211e1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Added various missing test skips observed on MongoDB.</title>
<updated>2026-02-10T21:06:49Z</updated>
<author>
<name>Tim Graham</name>
<email>timograham@gmail.com</email>
</author>
<published>2026-02-10T01:28:05Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=ef46215fdecb755c0b77c47fdb8fec670abb5e8b'/>
<id>urn:sha1:ef46215fdecb755c0b77c47fdb8fec670abb5e8b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed #36893 -- Serialized elidable kwarg for RunSQL and RunPython operations.</title>
<updated>2026-02-03T02:05:44Z</updated>
<author>
<name>SnippyCodes</name>
<email>aaryanparik124@gmail.com</email>
</author>
<published>2026-01-31T08:13:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=1d4c52c8bf62cc912e5099e86ff229b69ce9d227'/>
<id>urn:sha1:1d4c52c8bf62cc912e5099e86ff229b69ce9d227</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed #36878 -- Unified data type for *_together options in ModelState.</title>
<updated>2026-01-28T21:13:05Z</updated>
<author>
<name>Markus Holtermann</name>
<email>info@markusholtermann.eu</email>
</author>
<published>2026-01-23T13:45:33Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=83622b824b7014977dfc7086bbc2628ea53f4cd0'/>
<id>urn:sha1:83622b824b7014977dfc7086bbc2628ea53f4cd0</id>
<content type='text'>
Ever since the beginning of Django's migration framework, there's been a
bit of an inconsistency on how index_together and unique_together values
have been stored on the ModelState[^1].

It's only really obvious, when looking at the current code for
`from_model()`[^2] and the `rename_field()` state alteration code[^3].

The problem in the autodetector's detection of the `*_together` options
as raised in the ticket, reinforces the inconsistency[^4]: the old value
is being normalized to a set of tuples, whereas the new value is taken
as-is.

Why this hasn't been caught before, is likely to the fact, that we
never really look at a `to_state` that comes from migration operations
in the autodetector. Instead, in both usages in Django[^5], [^6] the
`to_state` is a `ProjectState.from_apps()`. And that state is
consistently using sets of tuples and not lists of lists.

[^1]: https://github.com/django/django/commit/67dcea711e92025d0e8676b869b7ef15dbc6db73#diff-5dd147e9e978e645313dd99eab3a7bab1f1cb0a53e256843adb68aeed71e61dcR85-R87
[^2]: https://github.com/django/django/blob/b1ffa9a9d78b0c2c5ad6ed5a1d84e380d5cfd010/django/db/migrations/state.py#L842
[^3]: https://github.com/django/django/blob/b1ffa9a9d78b0c2c5ad6ed5a1d84e380d5cfd010/django/db/migrations/state.py#L340-L345
[^4]: https://github.com/django/django/blob/b1ffa9a9d78b0c2c5ad6ed5a1d84e380d5cfd010/django/db/migrations/autodetector.py#L1757-L1771
[^5]: https://github.com/django/django/blob/2351c1b12cc9cf82d642f769c774bc3ea0cc4006/django/core/management/commands/makemigrations.py#L215-L219
[^6]: https://github.com/django/django/blob/2351c1b12cc9cf82d642f769c774bc3ea0cc4006/django/core/management/commands/migrate.py#L329-L332
</content>
</entry>
<entry>
<title>Applied Black's 2026 stable style.</title>
<updated>2026-01-18T20:26:56Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2026-01-18T20:26:56Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=6cff02078799b7c683a0d39630d49ab4fe532e7c'/>
<id>urn:sha1:6cff02078799b7c683a0d39630d49ab4fe532e7c</id>
<content type='text'>
https://github.com/psf/black/releases/tag/26.1.0</content>
</entry>
<entry>
<title>Fixed #36791 -- Made MigrationAutodetector recreate through table when m2m target model changes.</title>
<updated>2025-12-19T19:01:37Z</updated>
<author>
<name>Johanan Oppong Amoateng</name>
<email>johananoppongamoateng2001@gmail.com</email>
</author>
<published>2025-12-12T23:17:38Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=33a0a6f033b9243e0cc98e76bd494de73cf144eb'/>
<id>urn:sha1:33a0a6f033b9243e0cc98e76bd494de73cf144eb</id>
<content type='text'>
Co-Authored-By: Jacob Walls &lt;38668450+jacobtylerwalls@users.noreply.github.com&gt;
Co-Authored-By: Clifford Gama &lt;cliffygamy@gmail.com&gt;
</content>
</entry>
<entry>
<title>Refs #36652 -- Avoided missing imports in a temporary file generated in a migration test.</title>
<updated>2025-12-15T20:24:57Z</updated>
<author>
<name>Jacob Walls</name>
<email>jacobtylerwalls@gmail.com</email>
</author>
<published>2025-11-20T18:52:24Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=0071cb1efd559d721e5882da2e18556f867eed76'/>
<id>urn:sha1:0071cb1efd559d721e5882da2e18556f867eed76</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed #36765 -- Added support for stored GeneratedFields on Oracle 23ai/26ai (23.7+).</title>
<updated>2025-12-13T15:38:04Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2025-12-13T15:38:04Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=0174a85770356fd12e4c8daa42a4f1c752ae00e6'/>
<id>urn:sha1:0174a85770356fd12e4c8daa42a4f1c752ae00e6</id>
<content type='text'>
Thanks Jacob Walls for the review.</content>
</entry>
</feed>
