Fix handling of models with UUID primary keys in reference index

stable/6.4.x
Matt Westcott 2025-02-13 12:49:47 +00:00
rodzic e09082bd43
commit b313098aa0
4 zmienionych plików z 41 dodań i 1 usunięć

Wyświetl plik

@ -72,7 +72,7 @@ def update_reference_index_on_save(instance, **kwargs):
return
update_reference_index_task.enqueue(
instance._meta.app_label, instance._meta.model_name, instance.pk
instance._meta.app_label, instance._meta.model_name, str(instance.pk)
)

Wyświetl plik

@ -0,0 +1,25 @@
# Generated by Django 5.1.5 on 2025-02-13 01:36
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("tests", "0046_alter_custom_rendition_to_unique_constraint"),
("wagtailcore", "0094_alter_page_locale"),
]
operations = [
migrations.AddField(
model_name="advertwithcustomuuidprimarykey",
name="page",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="wagtailcore.page",
),
),
]

Wyświetl plik

@ -1010,10 +1010,12 @@ class AdvertWithCustomUUIDPrimaryKey(ClusterableModel):
advert_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
url = models.URLField(null=True, blank=True)
text = models.CharField(max_length=255)
page = models.ForeignKey(Page, null=True, blank=True, on_delete=models.SET_NULL)
panels = [
FieldPanel("url"),
FieldPanel("text"),
FieldPanel("page"),
]
def __str__(self):

Wyświetl plik

@ -250,6 +250,19 @@ class TestCreateOrUpdateForObject(TestCase):
refs = ReferenceIndex.get_references_to(content_type)
self.assertEqual(refs.count(), 0)
def test_model_with_uuid_primary_key(self):
refs = ReferenceIndex.get_references_to(self.event_page)
self.assertEqual(refs.count(), 0)
with self.captureOnCommitCallbacks(execute=True):
AdvertWithCustomUUIDPrimaryKey.objects.create(
text="An advertisement",
page=self.event_page,
)
refs = ReferenceIndex.get_references_to(self.event_page)
self.assertEqual(refs.count(), 1)
def test_rebuild_references_index_no_verbosity(self):
stdout = StringIO()
management.call_command(