summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2014-05-28 17:12:01 -0700
committerAndrew Godwin <andrew@aeracode.org>2014-05-28 17:12:01 -0700
commit61185bba72dbb13e4f5f233f6be790957a57914c (patch)
treecc34fa8c441b9ade24e2025b56b2da18386cfc25
parent69337d485cd3f8cc938bebbf2d01121e0d688889 (diff)
parentbf9953cfb8d92f2757b6d5f0ba93d03533321619 (diff)
Merge pull request #2734 from valberg/double_order_trouble
Fixed #22720 -- Migrations attempt to create _order twice.
-rw-r--r--django/db/models/options.py3
-rw-r--r--tests/order_with_respect_to/tests.py21
2 files changed, 23 insertions, 1 deletions
diff --git a/django/db/models/options.py b/django/db/models/options.py
index a5f4280418..4f04746200 100644
--- a/django/db/models/options.py
+++ b/django/db/models/options.py
@@ -167,7 +167,8 @@ class Options(object):
if self.order_with_respect_to:
self.order_with_respect_to = self.get_field(self.order_with_respect_to)
self.ordering = ('_order',)
- model.add_to_class('_order', OrderWrt())
+ if not any(isinstance(field, OrderWrt) for field in model._meta.local_fields):
+ model.add_to_class('_order', OrderWrt())
else:
self.order_with_respect_to = None
diff --git a/tests/order_with_respect_to/tests.py b/tests/order_with_respect_to/tests.py
index 444caee142..2d5e85cb04 100644
--- a/tests/order_with_respect_to/tests.py
+++ b/tests/order_with_respect_to/tests.py
@@ -4,6 +4,8 @@ from operator import attrgetter
from django.test import TestCase
+from django.db import models
+
from .models import Post, Question, Answer
@@ -71,3 +73,22 @@ class OrderWithRespectToTests(TestCase):
Post.objects.create(title="2.1", parent=p2)
p1_3 = Post.objects.create(title="1.3", parent=p1)
self.assertEqual(p1.get_post_order(), [p1_1.pk, p1_2.pk, p1_3.pk])
+
+ def test_duplicate_order_field(self):
+
+ class Bar(models.Model):
+ pass
+
+ class Foo(models.Model):
+ bar = models.ForeignKey(Bar)
+ order = models.OrderWrt()
+
+ class Meta:
+ order_with_respect_to = 'bar'
+
+ count = 0
+ for field in Foo._meta.local_fields:
+ if isinstance(field, models.OrderWrt):
+ count += 1
+
+ self.assertEqual(count, 1)