Commit 61185bba authored by Andrew Godwin's avatar Andrew Godwin
Browse files

Merge pull request #2734 from valberg/double_order_trouble

Fixed #22720 -- Migrations attempt to create _order twice.
parents 69337d48 bf9953cf
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -167,6 +167,7 @@ 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',)
            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
+21 −0
Original line number Diff line number Diff line
@@ -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)