Shared task
Fixed #32893 -- Fixed serialization of models.Model class in migrations.
PR #14580 ↗ · django/django · · merged Jul 1, 2021 · +8 −1 · base 36fa071d6ebd
what a new run launched now would send
Missing import statement in generated migration (NameError: name 'models' is not defined)
Description
I found a bug in Django's latest release: 3.2.4.
Given the following contents of models.py:
from django.db import models
class MyField(models.TextField):
pass
class MyBaseModel(models.Model):
class Meta:
abstract = True
class MyMixin:
pass
class MyModel(MyMixin, MyBaseModel):
name = MyField(primary_key=True)
The makemigrations command will generate the following migration file:
# Generated by Django 3.2.4 on 2021-06-30 19:13
import app.models
from django.db import migrations
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='MyModel',
fields=[
('name', app.models.MyField(primary_key=True, serialize=False)),
],
options={
'abstract': False,
},
bases=(app.models.MyMixin, models.Model),
),
]
Which will then fail with the following error:
File "/home/jj/django_example/app/migrations/0001_initial.py", line 7, in <module>
class Migration(migrations.Migration):
File "/home/jj/django_example/app/migrations/0001_initial.py", line 23, in Migration
bases=(app.models.MyMixin, models.Model),
NameError: name 'models' is not defined
Expected behavior: Django generates a migration file that is valid Python.
Actual behavior: Django generates a migration file that is missing an import statement.
I think this is a bug of the module django.db.migrations.writer, but I'm not sure. I will be happy to assist with debugging.
Thanks for your attention,
Jaap Joris
Work only inside this repository checkout. Make the code change the task
describes, keeping the diff focused — no drive-by refactors.
When you are done, leave your changes committed or in the working tree;
they are collected automatically.
Stay on this snapshot checkout (`task/ycb_django_pr14580`). Never checkout, pull, or rebase onto `main`. That branch is a README-only orphan.
Stay on this HEAD. Do not fetch another default branch. Push only on the Cursor-created `crazy-cursor/…` side branch from this HEAD.Some past runs of this task were launched with a different prompt (the prompt template changed since, or those runs predate this benchmark's stored prompt). Each run persists the exact prompt it sent at launch — that per-launch record is the audit trail; this page shows only the current one.
| Run | Model | Verdict |
|---|---|---|
| Aug 21, 12:31 UTC · completed | composer-2.5 | PASS |
| Aug 21, 12:31 UTC · completed | grok-4.6 | PASS |
| Aug 21, 12:31 UTC · completed | grok-4.6-low |
Powered by YourCodingBench — benchmark coding models on your own repo's commits. sign in
| Aug 21, 12:31 UTC · completed | grok-4.6-medium | PASS |
| Aug 21, 12:31 UTC · completed | grok-4.6-xhigh | PASS |
Binary verdicts from the pinned judge (D27). Full attempt detail — candidate diff, transcript, timings — lives on each run page's score matrix.