2015-11-02 72 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