From f7cb1e1bbbc613eaf74a09f5c6dcb24c1fbde21b Mon Sep 17 00:00:00 2001
From: Tim Graham
Date: Sat, 23 May 2026 18:32:36 -0400
Subject: [PATCH] Removed hardcoded pks in many tests.
---
tests/admin_changelist/tests.py | 12 +-
tests/admin_inlines/tests.py | 2 +-
tests/admin_views/tests.py | 131 +++++++++++-----------
tests/delete_regress/tests.py | 2 +-
tests/force_insert_update/tests.py | 8 +-
tests/forms_tests/tests/tests.py | 92 +++++++--------
tests/model_formsets/tests.py | 114 +++++++++----------
tests/multiple_database/tests.py | 10 +-
tests/order_with_respect_to/base_tests.py | 12 +-
tests/queries/tests.py | 30 ++---
tests/sites_framework/tests.py | 19 ++--
11 files changed, 216 insertions(+), 216 deletions(-)
diff --git a/tests/admin_changelist/tests.py b/tests/admin_changelist/tests.py
index ba1f5d179365..f1d1abc0b0a5 100644
--- a/tests/admin_changelist/tests.py
+++ b/tests/admin_changelist/tests.py
@@ -1148,16 +1148,20 @@ def test_dynamic_list_display_links(self):
Regression tests for #16257: dynamic list_display_links support.
"""
parent = Parent.objects.create(name="parent")
+ children = []
for i in range(1, 10):
- Child.objects.create(id=i, name="child %s" % i, parent=parent, age=i)
+ children.append(
+ Child.objects.create(name="child %s" % i, parent=parent, age=i + 1)
+ )
m = DynamicListDisplayLinksChildAdmin(Child, custom_site)
superuser = self._create_superuser("superuser")
request = self._mocked_authenticated_request("/child/", superuser)
response = m.changelist_view(request)
- for i in range(1, 10):
- link = reverse("admin:admin_changelist_child_change", args=(i,))
- self.assertContains(response, '%s' % (link, i))
+ for child in children:
+ link = reverse("admin:admin_changelist_child_change", args=(child.pk,))
+ # "age" is in list_display_links.
+ self.assertContains(response, '%s' % (link, child.age))
list_display = m.get_list_display(request)
list_display_links = m.get_list_display_links(request, list_display)
diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py
index a2814a8d46cd..e27dc919498a 100644
--- a/tests/admin_inlines/tests.py
+++ b/tests/admin_inlines/tests.py
@@ -1030,7 +1030,7 @@ def setUpTestData(cls):
)
cls.user.user_permissions.add(permission)
- author = Author.objects.create(pk=1, name="The Author")
+ author = Author.objects.create(name="The Author")
cls.book = author.books.create(name="The inline Book")
cls.author_change_url = reverse(
"admin:admin_inlines_author_change", args=(author.id,)
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 3a7dde7f2dc9..eecd29536bdf 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -1893,7 +1893,7 @@ def test_custom_model_admin_templates(self):
data={
"index": 0,
"action": ["delete_selected"],
- "_selected_action": ["1"],
+ "_selected_action": [str(article_pk)],
},
)
self.assertTemplateUsed(
@@ -4901,30 +4901,28 @@ def test_non_form_errors_is_errorlist(self):
)
def test_list_editable_ordering(self):
- collector = Collector.objects.create(id=1, name="Frederick Clegg")
-
- Category.objects.create(id=1, order=1, collector=collector)
- Category.objects.create(id=2, order=2, collector=collector)
- Category.objects.create(id=3, order=0, collector=collector)
- Category.objects.create(id=4, order=0, collector=collector)
-
+ collector = Collector.objects.create(name="Frederick Clegg")
+ category1 = Category.objects.create(order=1, collector=collector)
+ category2 = Category.objects.create(order=2, collector=collector)
+ category3 = Category.objects.create(order=0, collector=collector)
+ category4 = Category.objects.create(order=0, collector=collector)
# NB: The order values must be changed so that the items are reordered.
data = {
"form-TOTAL_FORMS": "4",
"form-INITIAL_FORMS": "4",
"form-MAX_NUM_FORMS": "0",
"form-0-order": "14",
- "form-0-id": "1",
- "form-0-collector": "1",
+ "form-0-id": str(category1.id),
+ "form-0-collector": str(collector.id),
"form-1-order": "13",
- "form-1-id": "2",
- "form-1-collector": "1",
+ "form-1-id": str(category2.id),
+ "form-1-collector": str(collector.id),
"form-2-order": "1",
- "form-2-id": "3",
- "form-2-collector": "1",
+ "form-2-id": str(category3.id),
+ "form-2-collector": str(collector.id),
"form-3-order": "0",
- "form-3-id": "4",
- "form-3-collector": "1",
+ "form-3-id": str(category4.id),
+ "form-3-collector": str(collector.id),
# The form processing understands this as a list_editable "Save"
# and not an action "Run".
"_save": "Save",
@@ -4936,18 +4934,18 @@ def test_list_editable_ordering(self):
self.assertEqual(response.status_code, 302)
# The order values have been applied to the right objects
- self.assertEqual(Category.objects.get(id=1).order, 14)
- self.assertEqual(Category.objects.get(id=2).order, 13)
- self.assertEqual(Category.objects.get(id=3).order, 1)
- self.assertEqual(Category.objects.get(id=4).order, 0)
+ self.assertEqual(Category.objects.get(id=category1.id).order, 14)
+ self.assertEqual(Category.objects.get(id=category2.id).order, 13)
+ self.assertEqual(Category.objects.get(id=category3.id).order, 1)
+ self.assertEqual(Category.objects.get(id=category4.id).order, 0)
def test_list_editable_pagination(self):
"""
Pagination works for list_editable items.
"""
- UnorderedObject.objects.create(id=1, name="Unordered object #1")
- UnorderedObject.objects.create(id=2, name="Unordered object #2")
- UnorderedObject.objects.create(id=3, name="Unordered object #3")
+ UnorderedObject.objects.create(name="Unordered object #1")
+ UnorderedObject.objects.create(name="Unordered object #2")
+ UnorderedObject.objects.create(name="Unordered object #3")
response = self.client.get(
reverse("admin:admin_views_unorderedobject_changelist")
)
@@ -4969,14 +4967,14 @@ def test_list_editable_action_submit(self):
"form-INITIAL_FORMS": "3",
"form-MAX_NUM_FORMS": "0",
"form-0-gender": "1",
- "form-0-id": "1",
+ "form-0-id": str(self.per1.id),
"form-1-gender": "2",
- "form-1-id": "2",
+ "form-1-id": str(self.per2.id),
"form-2-alive": "checked",
"form-2-gender": "1",
- "form-2-id": "3",
+ "form-2-id": str(self.per3.id),
"index": "0",
- "_selected_action": ["3"],
+ "_selected_action": [str(self.per3.id)],
"action": ["", "delete_selected"],
}
self.client.post(reverse("admin:admin_views_person_changelist"), data)
@@ -4999,7 +4997,7 @@ def test_list_editable_action_choices(self):
"form-2-gender": "1",
"form-2-id": str(self.per3.pk),
"_save": "Save",
- "_selected_action": ["1"],
+ "_selected_action": [str(self.per1.pk)],
"action": ["", "delete_selected"],
}
self.client.post(reverse("admin:admin_views_person_changelist"), data)
@@ -5830,7 +5828,7 @@ def setUpTestData(cls):
cls.superuser = User.objects.create_superuser(
username="super", password="secret", email="super@example.com"
)
- cls.collector = Collector.objects.create(pk=1, name="John Fowles")
+ cls.collector = Collector.objects.create(name="John Fowles")
def setUp(self):
self.post_data = {
@@ -5839,63 +5837,63 @@ def setUp(self):
"widget_set-INITIAL_FORMS": "0",
"widget_set-MAX_NUM_FORMS": "0",
"widget_set-0-id": "",
- "widget_set-0-owner": "1",
+ "widget_set-0-owner": str(self.collector.pk),
"widget_set-0-name": "",
"widget_set-1-id": "",
- "widget_set-1-owner": "1",
+ "widget_set-1-owner": str(self.collector.pk),
"widget_set-1-name": "",
"widget_set-2-id": "",
- "widget_set-2-owner": "1",
+ "widget_set-2-owner": str(self.collector.pk),
"widget_set-2-name": "",
"doohickey_set-TOTAL_FORMS": "3",
"doohickey_set-INITIAL_FORMS": "0",
"doohickey_set-MAX_NUM_FORMS": "0",
- "doohickey_set-0-owner": "1",
+ "doohickey_set-0-owner": str(self.collector.pk),
"doohickey_set-0-code": "",
"doohickey_set-0-name": "",
- "doohickey_set-1-owner": "1",
+ "doohickey_set-1-owner": str(self.collector.pk),
"doohickey_set-1-code": "",
"doohickey_set-1-name": "",
- "doohickey_set-2-owner": "1",
+ "doohickey_set-2-owner": str(self.collector.pk),
"doohickey_set-2-code": "",
"doohickey_set-2-name": "",
"grommet_set-TOTAL_FORMS": "3",
"grommet_set-INITIAL_FORMS": "0",
"grommet_set-MAX_NUM_FORMS": "0",
"grommet_set-0-code": "",
- "grommet_set-0-owner": "1",
+ "grommet_set-0-owner": str(self.collector.pk),
"grommet_set-0-name": "",
"grommet_set-1-code": "",
- "grommet_set-1-owner": "1",
+ "grommet_set-1-owner": str(self.collector.pk),
"grommet_set-1-name": "",
"grommet_set-2-code": "",
- "grommet_set-2-owner": "1",
+ "grommet_set-2-owner": str(self.collector.pk),
"grommet_set-2-name": "",
"whatsit_set-TOTAL_FORMS": "3",
"whatsit_set-INITIAL_FORMS": "0",
"whatsit_set-MAX_NUM_FORMS": "0",
- "whatsit_set-0-owner": "1",
+ "whatsit_set-0-owner": str(self.collector.pk),
"whatsit_set-0-index": "",
"whatsit_set-0-name": "",
- "whatsit_set-1-owner": "1",
+ "whatsit_set-1-owner": str(self.collector.pk),
"whatsit_set-1-index": "",
"whatsit_set-1-name": "",
- "whatsit_set-2-owner": "1",
+ "whatsit_set-2-owner": str(self.collector.pk),
"whatsit_set-2-index": "",
"whatsit_set-2-name": "",
"fancydoodad_set-TOTAL_FORMS": "3",
"fancydoodad_set-INITIAL_FORMS": "0",
"fancydoodad_set-MAX_NUM_FORMS": "0",
"fancydoodad_set-0-doodad_ptr": "",
- "fancydoodad_set-0-owner": "1",
+ "fancydoodad_set-0-owner": str(self.collector.pk),
"fancydoodad_set-0-name": "",
"fancydoodad_set-0-expensive": "on",
"fancydoodad_set-1-doodad_ptr": "",
- "fancydoodad_set-1-owner": "1",
+ "fancydoodad_set-1-owner": str(self.collector.pk),
"fancydoodad_set-1-name": "",
"fancydoodad_set-1-expensive": "on",
"fancydoodad_set-2-doodad_ptr": "",
- "fancydoodad_set-2-owner": "1",
+ "fancydoodad_set-2-owner": str(self.collector.pk),
"fancydoodad_set-2-name": "",
"fancydoodad_set-2-expensive": "on",
"category_set-TOTAL_FORMS": "3",
@@ -5903,13 +5901,13 @@ def setUp(self):
"category_set-MAX_NUM_FORMS": "0",
"category_set-0-order": "",
"category_set-0-id": "",
- "category_set-0-collector": "1",
+ "category_set-0-collector": str(self.collector.pk),
"category_set-1-order": "",
"category_set-1-id": "",
- "category_set-1-collector": "1",
+ "category_set-1-collector": str(self.collector.pk),
"category_set-2-order": "",
"category_set-2-id": "",
- "category_set-2-collector": "1",
+ "category_set-2-collector": str(self.collector.pk),
}
self.client.force_login(self.superuser)
@@ -6105,11 +6103,10 @@ def test_ordered_inline(self):
An inline with an editable ordering fields is updated correctly.
"""
# Create some objects with an initial ordering
- Category.objects.create(id=1, order=1, collector=self.collector)
- Category.objects.create(id=2, order=2, collector=self.collector)
- Category.objects.create(id=3, order=0, collector=self.collector)
- Category.objects.create(id=4, order=0, collector=self.collector)
-
+ category1 = Category.objects.create(order=1, collector=self.collector)
+ category2 = Category.objects.create(order=2, collector=self.collector)
+ category3 = Category.objects.create(order=0, collector=self.collector)
+ category4 = Category.objects.create(order=0, collector=self.collector)
# NB: The order values must be changed so that the items are reordered.
self.post_data.update(
{
@@ -6118,26 +6115,26 @@ def test_ordered_inline(self):
"category_set-INITIAL_FORMS": "4",
"category_set-MAX_NUM_FORMS": "0",
"category_set-0-order": "14",
- "category_set-0-id": "1",
- "category_set-0-collector": "1",
+ "category_set-0-id": str(category1.id),
+ "category_set-0-collector": str(self.collector.id),
"category_set-1-order": "13",
- "category_set-1-id": "2",
- "category_set-1-collector": "1",
+ "category_set-1-id": str(category2.id),
+ "category_set-1-collector": str(self.collector.pk),
"category_set-2-order": "1",
- "category_set-2-id": "3",
- "category_set-2-collector": "1",
+ "category_set-2-id": str(category3.id),
+ "category_set-2-collector": str(self.collector.pk),
"category_set-3-order": "0",
- "category_set-3-id": "4",
- "category_set-3-collector": "1",
+ "category_set-3-id": str(category4.id),
+ "category_set-3-collector": str(self.collector.pk),
"category_set-4-order": "",
"category_set-4-id": "",
- "category_set-4-collector": "1",
+ "category_set-4-collector": str(self.collector.pk),
"category_set-5-order": "",
"category_set-5-id": "",
- "category_set-5-collector": "1",
+ "category_set-5-collector": str(self.collector.pk),
"category_set-6-order": "",
"category_set-6-id": "",
- "category_set-6-collector": "1",
+ "category_set-6-collector": str(self.collector.pk),
}
)
collector_url = reverse(
@@ -6149,10 +6146,10 @@ def test_ordered_inline(self):
# The order values have been applied to the right objects
self.assertEqual(self.collector.category_set.count(), 4)
- self.assertEqual(Category.objects.get(id=1).order, 14)
- self.assertEqual(Category.objects.get(id=2).order, 13)
- self.assertEqual(Category.objects.get(id=3).order, 1)
- self.assertEqual(Category.objects.get(id=4).order, 0)
+ self.assertEqual(Category.objects.get(id=category1.id).order, 14)
+ self.assertEqual(Category.objects.get(id=category2.id).order, 13)
+ self.assertEqual(Category.objects.get(id=category3.id).order, 1)
+ self.assertEqual(Category.objects.get(id=category4.id).order, 0)
@override_settings(ROOT_URLCONF="admin_views.urls")
diff --git a/tests/delete_regress/tests.py b/tests/delete_regress/tests.py
index dc1039f7b98b..40f556bb85c0 100644
--- a/tests/delete_regress/tests.py
+++ b/tests/delete_regress/tests.py
@@ -117,7 +117,7 @@ def test_fk_to_m2m_through(self):
self.assertEqual(PlayedWithNote.objects.count(), 0)
def test_15776(self):
- policy = Policy.objects.create(pk=1, policy_number="1234")
+ policy = Policy.objects.create(policy_number="1234")
version = Version.objects.create(policy=policy)
location = Location.objects.create(version=version)
Item.objects.create(version=version, location=location)
diff --git a/tests/force_insert_update/tests.py b/tests/force_insert_update/tests.py
index 619b8b413d78..ff28b94ea3b5 100644
--- a/tests/force_insert_update/tests.py
+++ b/tests/force_insert_update/tests.py
@@ -125,7 +125,7 @@ def test_force_insert_false(self):
self.assertEqual(obj.value, 3)
def test_force_insert_false_with_existing_parent(self):
- parent = Counter.objects.create(pk=1, value=1)
+ parent = Counter.objects.create(value=1)
with self.assertNumQueries(2):
SubCounter.objects.create(pk=parent.pk, value=2)
@@ -152,15 +152,15 @@ def test_force_insert_with_grandparent(self):
def test_force_insert_with_existing_grandparent(self):
# Force insert only the last child.
- grandparent = Counter.objects.create(pk=1, value=1)
+ grandparent = Counter.objects.create(value=1)
with self.assertNumQueries(4):
SubSubCounter(pk=grandparent.pk, value=1).save(force_insert=True)
# Force insert a parent, and don't force insert a grandparent.
- grandparent = Counter.objects.create(pk=2, value=1)
+ grandparent = Counter.objects.create(value=1)
with self.assertNumQueries(3):
SubSubCounter(pk=grandparent.pk, value=1).save(force_insert=(SubCounter,))
# Force insert parents on all levels, grandparent conflicts.
- grandparent = Counter.objects.create(pk=3, value=1)
+ grandparent = Counter.objects.create(value=1)
with self.assertRaises(IntegrityError), transaction.atomic():
SubSubCounter(pk=grandparent.pk, value=1).save(force_insert=(Counter,))
diff --git a/tests/forms_tests/tests/tests.py b/tests/forms_tests/tests/tests.py
index 253e34976aa5..b486570fc325 100644
--- a/tests/forms_tests/tests/tests.py
+++ b/tests/forms_tests/tests/tests.py
@@ -101,45 +101,46 @@ def test_callable_initial_value(self):
The initial value for a callable default returning a queryset is the
pk.
"""
- ChoiceOptionModel.objects.create(id=1, name="default")
- ChoiceOptionModel.objects.create(id=2, name="option 2")
- ChoiceOptionModel.objects.create(id=3, name="option 3")
+ obj1 = ChoiceOptionModel.objects.create(id=1, name="default")
+ obj2 = ChoiceOptionModel.objects.create(id=2, name="option 2")
+ obj3 = ChoiceOptionModel.objects.create(id=3, name="option 3")
self.assertHTMLEqual(
ChoiceFieldForm().as_p(),
- """
+ f"""
-
+
-
-
-
""",
@@ -147,9 +148,9 @@ def test_callable_initial_value(self):
def test_initial_instance_value(self):
"Initial instances for model fields may also be instances (refs #7287)"
- ChoiceOptionModel.objects.create(id=1, name="default")
- obj2 = ChoiceOptionModel.objects.create(id=2, name="option 2")
- obj3 = ChoiceOptionModel.objects.create(id=3, name="option 3")
+ obj1 = ChoiceOptionModel.objects.create(name="default")
+ obj2 = ChoiceOptionModel.objects.create(name="option 2")
+ obj3 = ChoiceOptionModel.objects.create(name="option 3")
self.assertHTMLEqual(
ChoiceFieldForm(
initial={
@@ -161,44 +162,45 @@ def test_initial_instance_value(self):
),
}
).as_p(),
- """
+ f"""
-
+
-
-
-
-
-
""",
@@ -374,9 +376,9 @@ class ManyToManyExclusionTestCase(TestCase):
def test_m2m_field_exclusion(self):
# Issue 12337. save_instance should honor the passed-in exclude
# keyword.
- opt1 = ChoiceOptionModel.objects.create(id=1, name="default")
- opt2 = ChoiceOptionModel.objects.create(id=2, name="option 2")
- opt3 = ChoiceOptionModel.objects.create(id=3, name="option 3")
+ opt1 = ChoiceOptionModel.objects.create(name="default")
+ opt2 = ChoiceOptionModel.objects.create(name="option 2")
+ opt3 = ChoiceOptionModel.objects.create(name="option 3")
initial = {
"choice": opt1,
"choice_int": opt1,
diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py
index f5049e0cf7f1..590ebd530a44 100644
--- a/tests/model_formsets/tests.py
+++ b/tests/model_formsets/tests.py
@@ -827,7 +827,7 @@ def test_inline_formsets_with_custom_pk(self):
AuthorBooksFormSet2 = inlineformset_factory(
Author, BookWithCustomPK, can_delete=False, extra=1, fields="__all__"
)
- author = Author.objects.create(pk=1, name="Charles Baudelaire")
+ author = Author.objects.create(name="Charles Baudelaire")
formset = AuthorBooksFormSet2(instance=author)
self.assertEqual(len(formset.forms), 1)
@@ -840,7 +840,7 @@ def test_inline_formsets_with_custom_pk(self):
''
'
',
+ f'value="{author.pk}" id="id_bookwithcustompk_set-0-author">',
)
data = {
@@ -860,7 +860,7 @@ def test_inline_formsets_with_custom_pk(self):
saved = formset.save()
self.assertEqual(len(saved), 1)
(book1,) = saved
- self.assertEqual(book1.pk, 77777)
+ self.assertEqual(book1.pk, Decimal("77777"))
book1 = author.bookwithcustompk_set.get()
self.assertEqual(book1.title, "Les Fleurs du Mal")
@@ -872,7 +872,7 @@ def test_inline_formsets_with_multi_table_inheritance(self):
AuthorBooksFormSet3 = inlineformset_factory(
Author, AlternateBook, can_delete=False, extra=1, fields="__all__"
)
- author = Author.objects.create(pk=1, name="Charles Baudelaire")
+ author = Author.objects.create(name="Charles Baudelaire")
formset = AuthorBooksFormSet3(instance=author)
self.assertEqual(len(formset.forms), 1)
@@ -884,8 +884,8 @@ def test_inline_formsets_with_multi_table_inheritance(self):
''
''
- ''
+ ''
'
',
)
@@ -922,7 +922,7 @@ def test_inline_formsets_with_nullable_unique_together(self):
extra=2,
fields="__all__",
)
- author = Author.objects.create(pk=1, name="Charles Baudelaire")
+ author = Author.objects.create(name="Charles Baudelaire")
data = {
# The number of forms rendered.
@@ -931,9 +931,9 @@ def test_inline_formsets_with_nullable_unique_together(self):
"bookwithoptionalalteditor_set-INITIAL_FORMS": "0",
# The max number of forms.
"bookwithoptionalalteditor_set-MAX_NUM_FORMS": "",
- "bookwithoptionalalteditor_set-0-author": "1",
+ "bookwithoptionalalteditor_set-0-author": str(author.pk),
"bookwithoptionalalteditor_set-0-title": "Les Fleurs du Mal",
- "bookwithoptionalalteditor_set-1-author": "1",
+ "bookwithoptionalalteditor_set-1-author": str(author.pk),
"bookwithoptionalalteditor_set-1-title": "Les Fleurs du Mal",
}
formset = AuthorBooksFormSet4(data, instance=author)
@@ -942,21 +942,19 @@ def test_inline_formsets_with_nullable_unique_together(self):
saved = formset.save()
self.assertEqual(len(saved), 2)
book1, book2 = saved
- self.assertEqual(book1.author_id, 1)
+ self.assertEqual(book1.author_id, author.pk)
self.assertEqual(book1.title, "Les Fleurs du Mal")
- self.assertEqual(book2.author_id, 1)
+ self.assertEqual(book2.author_id, author.pk)
self.assertEqual(book2.title, "Les Fleurs du Mal")
def test_inline_formsets_with_custom_save_method(self):
AuthorBooksFormSet = inlineformset_factory(
Author, Book, can_delete=False, extra=2, fields="__all__"
)
- author = Author.objects.create(pk=1, name="Charles Baudelaire")
- book1 = Book.objects.create(
- pk=1, author=author, title="Les Paradis Artificiels"
- )
- book2 = Book.objects.create(pk=2, author=author, title="Les Fleurs du Mal")
- book3 = Book.objects.create(pk=3, author=author, title="Flowers of Evil")
+ author = Author.objects.create(name="Charles Baudelaire")
+ book1 = Book.objects.create(author=author, title="Les Paradis Artificiels")
+ book2 = Book.objects.create(author=author, title="Les Fleurs du Mal")
+ book3 = Book.objects.create(author=author, title="Flowers of Evil")
class PoemForm(forms.ModelForm):
def save(self, commit=True):
@@ -998,9 +996,10 @@ def save(self, commit=True):
''
''
- ''
- ''
+ ''
+ ''
"
",
)
self.assertHTMLEqual(
@@ -1008,9 +1007,10 @@ def save(self, commit=True):
''
''
- ''
- ''
+ ''
+ ''
"
",
)
self.assertHTMLEqual(
@@ -1018,18 +1018,18 @@ def save(self, commit=True):
''
''
- ''
- '
',
+ ''
+ '',
)
self.assertHTMLEqual(
formset.forms[3].as_p(),
''
''
- ''
+ ''
'
',
)
self.assertHTMLEqual(
@@ -1037,8 +1037,8 @@ def save(self, commit=True):
''
''
- ''
+ ''
'
',
)
@@ -1065,27 +1065,27 @@ def save(self, commit=True):
''
''
- ''
- '
',
+ ''
+ '',
)
self.assertHTMLEqual(
formset.forms[1].as_p(),
''
''
- ''
- '
',
+ ''
+ f'',
)
self.assertHTMLEqual(
formset.forms[2].as_p(),
''
''
- ''
+ ''
'
',
)
@@ -1162,7 +1162,7 @@ def test_custom_pk(self):
# Custom primary keys with ForeignKey, OneToOneField and AutoField.
- place = Place.objects.create(pk=1, name="Giordanos", city="Chicago")
+ place = Place.objects.create(name="Giordanos", city="Chicago")
FormSet = inlineformset_factory(
Place, Owner, extra=2, can_delete=False, fields="__all__"
@@ -1174,7 +1174,7 @@ def test_custom_pk(self):
''
''
- ''
'
',
@@ -1184,7 +1184,7 @@ def test_custom_pk(self):
''
''
- ''
'
',
@@ -1214,7 +1214,7 @@ def test_custom_pk(self):
''
''
- ''
'
' % owner1.auto_id,
@@ -1224,7 +1224,7 @@ def test_custom_pk(self):
''
''
- ''
'
',
@@ -1234,7 +1234,7 @@ def test_custom_pk(self):
''
''
- ''
'
',
@@ -1337,7 +1337,7 @@ def test_custom_pk(self):
def test_unique_true_enforces_max_num_one(self):
# ForeignKey with unique=True should enforce max_num=1
- place = Place.objects.create(pk=1, name="Giordanos", city="Chicago")
+ place = Place.objects.create(name="Giordanos", city="Chicago")
FormSet = inlineformset_factory(
Place, Location, can_delete=False, fields="__all__"
@@ -1354,7 +1354,7 @@ def test_unique_true_enforces_max_num_one(self):
''
''
- ''
'
',
@@ -1761,7 +1761,7 @@ def test_model_formset_with_initial_queryset(self):
# has_changed should work with queryset and list of pk's
# see #18898
FormSet = modelformset_factory(AuthorMeeting, fields="__all__")
- Author.objects.create(pk=1, name="Charles Baudelaire")
+ Author.objects.create(name="Charles Baudelaire")
data = {
"form-TOTAL_FORMS": 1,
"form-INITIAL_FORMS": 0,
@@ -1863,10 +1863,10 @@ def test_prevent_duplicates_from_with_the_same_formset(self):
self.assertTrue(formset.is_valid())
FormSet = inlineformset_factory(Author, Book, extra=0, fields="__all__")
- author = Author.objects.create(pk=1, name="Charles Baudelaire")
- Book.objects.create(pk=1, author=author, title="Les Paradis Artificiels")
- Book.objects.create(pk=2, author=author, title="Les Fleurs du Mal")
- Book.objects.create(pk=3, author=author, title="Flowers of Evil")
+ author = Author.objects.create(name="Charles Baudelaire")
+ Book.objects.create(author=author, title="Les Paradis Artificiels")
+ Book.objects.create(author=author, title="Les Fleurs du Mal")
+ Book.objects.create(author=author, title="Flowers of Evil")
book_ids = author.book_set.order_by("id").values_list("id", flat=True)
data = {
@@ -2232,7 +2232,7 @@ def test_inlineformset_factory_help_text_overrides(self):
self.assertEqual(form["title"].help_text, "Choose carefully.")
def test_modelformset_factory_error_messages_overrides(self):
- author = Author.objects.create(pk=1, name="Charles Baudelaire")
+ author = Author.objects.create(name="Charles Baudelaire")
BookFormSet = modelformset_factory(
Book,
fields="__all__",
@@ -2243,7 +2243,7 @@ def test_modelformset_factory_error_messages_overrides(self):
self.assertEqual(form.errors, {"title": ["Title too long!!"]})
def test_inlineformset_factory_error_messages_overrides(self):
- author = Author.objects.create(pk=1, name="Charles Baudelaire")
+ author = Author.objects.create(name="Charles Baudelaire")
BookFormSet = inlineformset_factory(
Author,
Book,
@@ -2255,7 +2255,7 @@ def test_inlineformset_factory_error_messages_overrides(self):
self.assertEqual(form.errors, {"title": ["Title too long!!"]})
def test_modelformset_factory_field_class_overrides(self):
- author = Author.objects.create(pk=1, name="Charles Baudelaire")
+ author = Author.objects.create(name="Charles Baudelaire")
BookFormSet = modelformset_factory(
Book,
fields="__all__",
@@ -2268,7 +2268,7 @@ def test_modelformset_factory_field_class_overrides(self):
self.assertIsInstance(form.fields["title"], forms.SlugField)
def test_inlineformset_factory_field_class_overrides(self):
- author = Author.objects.create(pk=1, name="Charles Baudelaire")
+ author = Author.objects.create(name="Charles Baudelaire")
BookFormSet = inlineformset_factory(
Author,
Book,
diff --git a/tests/multiple_database/tests.py b/tests/multiple_database/tests.py
index 85091441aa15..42b2ba2486a1 100644
--- a/tests/multiple_database/tests.py
+++ b/tests/multiple_database/tests.py
@@ -899,8 +899,7 @@ def test_o2o_cross_database_protection(self):
new_bob_profile = UserProfile(flavor="spring surprise")
- # assigning a profile requires an explicit pk as the object isn't saved
- charlie = User(pk=51, username="charlie", email="charlie@example.com")
+ charlie = User(username="charlie", email="charlie@example.com")
charlie.set_unusable_password()
# initially, no db assigned
@@ -1882,10 +1881,10 @@ def test_m2m_managers(self):
managers
"""
pro = Book.objects.using("other").create(
- pk=1, title="Pro Django", published=datetime.date(2008, 12, 16)
+ title="Pro Django", published=datetime.date(2008, 12, 16)
)
- marty = Person.objects.using("other").create(pk=1, name="Marty Alchin")
+ marty = Person.objects.using("other").create(name="Marty Alchin")
self.assertEqual(pro.authors.db, "other")
self.assertEqual(pro.authors.db_manager("default").db, "default")
@@ -1900,9 +1899,8 @@ def test_foreign_key_managers(self):
FK reverse relations are represented by managers, and can be controlled
like managers.
"""
- marty = Person.objects.using("other").create(pk=1, name="Marty Alchin")
+ marty = Person.objects.using("other").create(name="Marty Alchin")
Book.objects.using("other").create(
- pk=1,
title="Pro Django",
published=datetime.date(2008, 12, 16),
editor=marty,
diff --git a/tests/order_with_respect_to/base_tests.py b/tests/order_with_respect_to/base_tests.py
index ec3793411da9..8252398fbbd6 100644
--- a/tests/order_with_respect_to/base_tests.py
+++ b/tests/order_with_respect_to/base_tests.py
@@ -19,10 +19,10 @@ def setUpTestData(cls):
cls.q1 = cls.Question.objects.create(
text="Which Beatle starts with the letter 'R'?"
)
- cls.Answer.objects.create(text="John", question=cls.q1)
- cls.Answer.objects.create(text="Paul", question=cls.q1)
- cls.Answer.objects.create(text="George", question=cls.q1)
- cls.Answer.objects.create(text="Ringo", question=cls.q1)
+ cls.a1 = cls.Answer.objects.create(text="John", question=cls.q1)
+ cls.a2 = cls.Answer.objects.create(text="Paul", question=cls.q1)
+ cls.a3 = cls.Answer.objects.create(text="George", question=cls.q1)
+ cls.a4 = cls.Answer.objects.create(text="Ringo", question=cls.q1)
def test_default_to_insertion_order(self):
# Answers will always be ordered in the order they were inserted.
@@ -125,7 +125,9 @@ def db_for_write(self, model, **hints):
using="other",
),
):
- self.q1.set_answer_order([3, 1, 2, 4])
+ self.q1.set_answer_order(
+ [self.a3.pk, self.a1.pk, self.a2.pk, self.a4.pk]
+ )
def test_bulk_create_with_empty_parent(self):
"""
diff --git a/tests/queries/tests.py b/tests/queries/tests.py
index 169ca4924af4..71d0b30196fe 100644
--- a/tests/queries/tests.py
+++ b/tests/queries/tests.py
@@ -129,9 +129,9 @@ def setUpTestData(cls):
cls.t4 = Tag.objects.create(name="t4", parent=cls.t3)
cls.t5 = Tag.objects.create(name="t5", parent=cls.t3)
- cls.n1 = Note.objects.create(note="n1", misc="foo", id=1)
- cls.n2 = Note.objects.create(note="n2", misc="bar", id=2)
- cls.n3 = Note.objects.create(note="n3", misc="foo", id=3, negate=False)
+ cls.n1 = Note.objects.create(note="n1", misc="foo")
+ cls.n2 = Note.objects.create(note="n2", misc="bar")
+ cls.n3 = Note.objects.create(note="n3", misc="foo", negate=False)
cls.ann1 = Annotation.objects.create(name="a1", tag=cls.t1)
cls.ann1.notes.add(cls.n1)
@@ -707,11 +707,13 @@ def test_ticket4358(self):
self.assertIn("note_id", ExtraInfo.objects.values()[0])
# You can also pass it in explicitly.
self.assertSequenceEqual(
- ExtraInfo.objects.values("note_id"), [{"note_id": 1}, {"note_id": 2}]
+ ExtraInfo.objects.values("note_id"),
+ [{"note_id": self.n1.pk}, {"note_id": self.n2.pk}],
)
# ...or use the field name.
self.assertSequenceEqual(
- ExtraInfo.objects.values("note"), [{"note": 1}, {"note": 2}]
+ ExtraInfo.objects.values("note"),
+ [{"note": self.n1.pk}, {"note": self.n2.pk}],
)
def test_ticket6154(self):
@@ -938,7 +940,7 @@ def test_ticket9985(self):
# qs.values_list(...).values(...) combinations should work.
self.assertSequenceEqual(
Note.objects.values_list("note", flat=True).values("id").order_by("id"),
- [{"id": 1}, {"id": 2}, {"id": 3}],
+ [{"id": self.n1.pk}, {"id": self.n2.pk}, {"id": self.n3.pk}],
)
self.assertSequenceEqual(
Annotation.objects.filter(
@@ -1846,8 +1848,8 @@ class Queries5Tests(TestCase):
def setUpTestData(cls):
# Ordering by 'rank' gives us rank2, rank1, rank3. Ordering by the
# Meta.ordering will be rank3, rank2, rank1.
- cls.n1 = Note.objects.create(note="n1", misc="foo", id=1)
- cls.n2 = Note.objects.create(note="n2", misc="bar", id=2)
+ cls.n1 = Note.objects.create(note="n1", misc="foo")
+ cls.n2 = Note.objects.create(note="n2", misc="bar")
e1 = ExtraInfo.objects.create(info="e1", note=cls.n1)
e2 = ExtraInfo.objects.create(info="e2", note=cls.n2)
a1 = Author.objects.create(name="a1", num=1001, extra=e1)
@@ -2073,7 +2075,7 @@ def test_join_already_in_query(self):
class DisjunctiveFilterTests(TestCase):
@classmethod
def setUpTestData(cls):
- cls.n1 = Note.objects.create(note="n1", misc="foo", id=1)
+ cls.n1 = Note.objects.create(note="n1", misc="foo")
cls.e1 = ExtraInfo.objects.create(info="e1", note=cls.n1)
def test_ticket7872(self):
@@ -2115,7 +2117,7 @@ def setUpTestData(cls):
cls.t3 = Tag.objects.create(name="t3", parent=cls.t1)
cls.t4 = Tag.objects.create(name="t4", parent=cls.t3)
cls.t5 = Tag.objects.create(name="t5", parent=cls.t3)
- n1 = Note.objects.create(note="n1", misc="foo", id=1)
+ n1 = Note.objects.create(note="n1", misc="foo")
cls.ann1 = Annotation.objects.create(name="a1", tag=cls.t1)
cls.ann1.notes.add(n1)
cls.ann2 = Annotation.objects.create(name="a2", tag=cls.t4)
@@ -2242,7 +2244,7 @@ def test_xor_subquery(self):
class RawQueriesTests(TestCase):
@classmethod
def setUpTestData(cls):
- Note.objects.create(note="n1", misc="foo", id=1)
+ Note.objects.create(note="n1", misc="foo")
def test_ticket14729(self):
# Test representation of raw query with one or few parameters passed as
@@ -2273,7 +2275,7 @@ def test_ticket10432(self):
class ComparisonTests(TestCase):
@classmethod
def setUpTestData(cls):
- cls.n1 = Note.objects.create(note="n1", misc="foo", id=1)
+ cls.n1 = Note.objects.create(note="n1", misc="foo")
e1 = ExtraInfo.objects.create(info="e1", note=cls.n1)
cls.a2 = Author.objects.create(name="a2", num=2002, extra=e1)
@@ -2916,7 +2918,7 @@ def test_slicing_can_slice_again_after_slicing(self):
def test_slicing_cannot_filter_queryset_once_sliced(self):
msg = "Cannot filter a query once a slice has been taken."
with self.assertRaisesMessage(TypeError, msg):
- Article.objects.all()[0:5].filter(id=1)
+ Article.objects.all()[0:5].filter(name="foo")
def test_slicing_cannot_reorder_queryset_once_sliced(self):
msg = "Cannot reorder a query once a slice has been taken."
@@ -3408,7 +3410,7 @@ class ExcludeTest17600(TestCase):
@classmethod
def setUpTestData(cls):
- # Create a few Orders.
+ # Create a few Orders. Explicit pks needed for IntegerField pk.
cls.o1 = Order.objects.create(pk=1)
cls.o2 = Order.objects.create(pk=2)
cls.o3 = Order.objects.create(pk=3)
diff --git a/tests/sites_framework/tests.py b/tests/sites_framework/tests.py
index 4a297a924349..33c3b354784b 100644
--- a/tests/sites_framework/tests.py
+++ b/tests/sites_framework/tests.py
@@ -1,4 +1,3 @@
-from django.conf import settings
from django.contrib.sites.managers import CurrentSiteManager
from django.contrib.sites.models import Site
from django.core import checks
@@ -12,31 +11,27 @@
class SitesFrameworkTestCase(TestCase):
@classmethod
def setUpTestData(cls):
- Site.objects.get_or_create(
- id=settings.SITE_ID, domain="example.com", name="example.com"
- )
- Site.objects.create(
- id=settings.SITE_ID + 1, domain="example2.com", name="example2.com"
- )
+ cls.site1 = Site.objects.get(domain="example.com", name="example.com")
+ cls.site2 = Site.objects.create(domain="example2.com", name="example2.com")
def test_site_fk(self):
article = ExclusiveArticle.objects.create(
- title="Breaking News!", site_id=settings.SITE_ID
+ title="Breaking News!", site=self.site1
)
self.assertEqual(ExclusiveArticle.on_site.get(), article)
def test_sites_m2m(self):
article = SyndicatedArticle.objects.create(title="Fresh News!")
- article.sites.add(Site.objects.get(id=settings.SITE_ID))
- article.sites.add(Site.objects.get(id=settings.SITE_ID + 1))
+ article.sites.add(self.site1)
+ article.sites.add(self.site2)
article2 = SyndicatedArticle.objects.create(title="More News!")
- article2.sites.add(Site.objects.get(id=settings.SITE_ID + 1))
+ article2.sites.add(self.site2)
self.assertEqual(SyndicatedArticle.on_site.get(), article)
def test_custom_named_field(self):
article = CustomArticle.objects.create(
title="Tantalizing News!",
- places_this_article_should_appear_id=settings.SITE_ID,
+ places_this_article_should_appear_id=self.site1.id,
)
self.assertEqual(CustomArticle.on_site.get(), article)