diff --git a/scrapy/tests/test_djangoitem/__init__.py b/scrapy/tests/test_djangoitem/__init__.py index d69965009..46ce4a012 100644 --- a/scrapy/tests/test_djangoitem/__init__.py +++ b/scrapy/tests/test_djangoitem/__init__.py @@ -11,9 +11,10 @@ except ImportError: django = None if django: - from .models import Person + from .models import Person, IdentifiedPerson else: Person = None + IdentifiedPerson = None class BasePersonItem(DjangoItem): @@ -28,6 +29,10 @@ class OverrideFieldPersonItem(BasePersonItem): age = Field() +class IdentifiedPersonItem(DjangoItem): + django_model = IdentifiedPerson + + class DjangoItemTest(unittest.TestCase): def setUp(self): @@ -46,6 +51,14 @@ class DjangoItemTest(unittest.TestCase): i = OverrideFieldPersonItem() self.assertEqual(i.fields.keys(), ['age', 'name']) + def test_custom_primary_key_field(self): + """ + Test that if a custom primary key exists, it is + in the field list. + """ + i = IdentifiedPersonItem() + self.assertEqual(i.fields.keys(), ['age', 'identifier', 'name']) + def test_save(self): i = BasePersonItem() self.assertEqual(i.fields.keys(), ['age', 'name']) diff --git a/scrapy/tests/test_djangoitem/models.py b/scrapy/tests/test_djangoitem/models.py index 57a8d648d..d2098632a 100644 --- a/scrapy/tests/test_djangoitem/models.py +++ b/scrapy/tests/test_djangoitem/models.py @@ -8,3 +8,10 @@ class Person(models.Model): class Meta: app_label = 'test_djangoitem' +class IdentifiedPerson(models.Model): + identifier = models.PositiveIntegerField(primary_key=True) + name = models.CharField(max_length=255) + age = models.IntegerField() + + class Meta: + app_label = 'test_djangoitem'