2015-11-02 66 views
0
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', 
    ) 

您好。我有product产品实例。我如何获得这些订购的结果?
product.b_products.all().order_by('product_b_rank')
product.a_products.all().order_by('product_a_rank')通过使用Django的模型字段定义ManyToManyField的订单

的Django 1.8

回答

1

使用双下划线order_by相关领域:

Product.objects.order_by("b_products__product_b_rank") 

编辑:

product.product_a.order_by('product_b_rank') 
product.product_b.order_by('product_a_rank') 
+0

'django.core.exceptions.FieldError:无法将关键字'product_b_rank'解析为字段。 ' – dimka665

+0

尝试我的编辑,如果它工作 –

+0

现在最好的aproximation是: '[relation.product_b关系在product.product_a_set.order_by('product_b_rank')]' – dimka665