Reputation: 659
class ProductRelation(models.Model):
product_a = models.ForeignKey('Product')
product_a_rank = models.PositiveSmallIntegerField('Position')
product_b = models.ForeignKey('Product')
product_b_rank = models.PositiveSmallIntegerField('Postition')
class Product(models.Model):
b_products = models.ManyToManyField('self', through=ProductRelation, symmetrical=False,
through_fields=('product_a', 'product_b'),
related_name='a_products',
)
Hello. I have product
Product instance. How can I get those ordered results?
product.b_products.all().order_by('product_b_rank')
and
product.a_products.all().order_by('product_a_rank')
Django 1.8
Upvotes: 1
Views: 606
Reputation: 20820
Use a double underscore to order_by
a related field:
Product.objects.order_by("b_products__product_b_rank")
Edit:
product.product_a.order_by('product_b_rank')
product.product_b.order_by('product_a_rank')
Upvotes: 2