diff --git a/completion/migrations/0004_rm_user_db_foreign_key.py b/completion/migrations/0004_rm_user_db_foreign_key.py new file mode 100644 index 0000000..29a1735 --- /dev/null +++ b/completion/migrations/0004_rm_user_db_foreign_key.py @@ -0,0 +1,21 @@ +# Dont create User foreign key constraint in db to avoid locking up the user table during course completion updates. + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('completion', '0003_learning_context'), + ] + + operations = [ + migrations.AlterField( + model_name='blockcompletion', + name='user', + field=models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/completion/models.py b/completion/models.py index 338fdc1..a5aa0a0 100644 --- a/completion/models.py +++ b/completion/models.py @@ -208,7 +208,7 @@ class BlockCompletion(TimeStampedModel, models.Model): .. no_pii: """ id = BigAutoField(primary_key=True) # pylint: disable=invalid-name - user = models.ForeignKey(User, on_delete=models.CASCADE) + user = models.ForeignKey(User, on_delete=models.CASCADE, db_constraint=False) context_key = LearningContextKeyField(max_length=255, db_column="course_key") # note: this usage key may not have the run filled in for