From bbc73e6a12227f5ed52fd38bc37f56f434a0a72c Mon Sep 17 00:00:00 2001 From: Roger Hu Date: Fri, 6 Dec 2013 01:14:57 +0000 Subject: [PATCH] Fixed #21566 -- Fixed AttributeError when using bulk_create with ForeignObject. --- django/db/models/query.py | 2 +- tests/foreign_object/tests.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/django/db/models/query.py b/django/db/models/query.py index 58180e1cf9..3226f38753 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -389,7 +389,7 @@ class QuerySet(object): return objs self._for_write = True connection = connections[self.db] - fields = self.model._meta.local_fields + fields = self.model._meta.local_concrete_fields with transaction.commit_on_success_unless_managed(using=self.db): if (connection.features.can_combine_inserts_with_and_without_auto_increment_pk and self.model._meta.has_auto_field): diff --git a/tests/foreign_object/tests.py b/tests/foreign_object/tests.py index 66f57b6f3c..f361c5c8d5 100644 --- a/tests/foreign_object/tests.py +++ b/tests/foreign_object/tests.py @@ -4,7 +4,7 @@ from operator import attrgetter from .models import ( Country, Person, Group, Membership, Friendship, Article, ArticleTranslation, ArticleTag, ArticleIdea, NewsArticle) -from django.test import TestCase +from django.test import TestCase, skipUnlessDBFeature from django.utils.translation import activate from django.core.exceptions import FieldError from django import forms @@ -380,6 +380,12 @@ class MultiColumnFKTests(TestCase): 'active_translation')[0].active_translation.title, "foo") + @skipUnlessDBFeature('has_bulk_insert') + def test_batch_create_foreign_object(self): + """ See: https://code.djangoproject.com/ticket/21566 """ + objs = [Person(name="abcd_%s" % i, person_country=self.usa) for i in range(0, 5)] + Person.objects.bulk_create(objs, 10) + class FormsTests(TestCase): # ForeignObjects should not have any form fields, currently the user needs