1
我有三個型號:如何按相關字段排序對象?
class Category(models.Model):
name = models.CharField(max_length=255, verbose_name=u'Name', blank=True, null=True)
parent = models.ForeignKey('self', null=True, blank=True)
[...]
class Item(models.Model):
name = models.CharField(max_length=255, verbose_name=u'Name', blank=True, null=True)
categories = models.ManyToManyField(Category, null=True, blank=True, related_name='cats',verbose_name=u'Categories')
[...]
class Positions(models.Model):
category = models.ForeignKey(Category)
item = models.ForeignKey(Item)
position = models.IntegerField(verbose_name=u'Position in category', default = 0)
[...]
我想從指定類別的項目,但根據位置排序(從位置)。 無論是可以在查詢來完成,如:
items = Items.objects.filter([...]).order_by(??)
或者我需要添加一個循環:
items = Items.objects.filter([...])
for item in items:
???
如何做到這一點呢?
(我還沒有弄清楚,如果沒有在表中的位置進行編號位置輸入)
這裏的問題是,項目可能有更多然後一個定位對象,所以使用這樣的過濾器有可能獲得重複。過濾器應該像這樣'Item.object.filter(positions__category = category).order_by('positions__position')'和Item.categories在這裏看起來是多餘的。也許你還需要閱讀本文「關於多對多關係的額外領域」https://docs.djangoproject.com/en/1.4/topics/db/models/#intermediary-manytomany – Igor