| 719 | | # Calculate lookup_order_field. |
|---|
| 720 | | # If the order-by field is a field with a relationship, order by the |
|---|
| 721 | | # value in the related table. |
|---|
| 722 | | lookup_order_field = self.order_field |
|---|
| 723 | | try: |
|---|
| 724 | | f = self.lookup_opts.get_field(self.order_field, many_to_many=False) |
|---|
| 725 | | except models.FieldDoesNotExist: |
|---|
| 726 | | pass |
|---|
| 727 | | else: |
|---|
| 728 | | if isinstance(f.rel, models.OneToOneRel): |
|---|
| 729 | | # For OneToOneFields, don't try to order by the related object's ordering criteria. |
|---|
| 730 | | pass |
|---|
| 731 | | elif isinstance(f.rel, models.ManyToOneRel): |
|---|
| 732 | | rel_ordering = f.rel.to._meta.ordering and f.rel.to._meta.ordering[0] or f.rel.to._meta.pk.column |
|---|
| 733 | | lookup_order_field = '%s.%s' % (f.rel.to._meta.db_table, rel_ordering) |
|---|
| 734 | | |
|---|