mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed a regression with get_or_create and virtual fields.
refs #20429 Thanks Simon Charette for the report and review.
This commit is contained in:
@@ -263,6 +263,29 @@ class GenericRelationsTests(TestCase):
|
||||
formset = GenericFormSet(initial=initial_data)
|
||||
self.assertEqual(formset.forms[0].initial, initial_data[0])
|
||||
|
||||
def test_get_or_create(self):
|
||||
# get_or_create should work with virtual fields (content_object)
|
||||
quartz = Mineral.objects.create(name="Quartz", hardness=7)
|
||||
tag, created = TaggedItem.objects.get_or_create(tag="shiny",
|
||||
defaults={'content_object': quartz})
|
||||
self.assertTrue(created)
|
||||
self.assertEqual(tag.tag, "shiny")
|
||||
self.assertEqual(tag.content_object.id, quartz.id)
|
||||
|
||||
def test_update_or_create_defaults(self):
|
||||
# update_or_create should work with virtual fields (content_object)
|
||||
quartz = Mineral.objects.create(name="Quartz", hardness=7)
|
||||
diamond = Mineral.objects.create(name="Diamond", hardness=7)
|
||||
tag, created = TaggedItem.objects.update_or_create(tag="shiny",
|
||||
defaults={'content_object': quartz})
|
||||
self.assertTrue(created)
|
||||
self.assertEqual(tag.content_object.id, quartz.id)
|
||||
|
||||
tag, created = TaggedItem.objects.update_or_create(tag="shiny",
|
||||
defaults={'content_object': diamond})
|
||||
self.assertFalse(created)
|
||||
self.assertEqual(tag.content_object.id, diamond.id)
|
||||
|
||||
|
||||
class CustomWidget(forms.TextInput):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user