-1

这是代码:

class Brand(models.Model):
    brand_name = models.CharField(max_length=200)
    def __unicode__(self):
        return self.brand_name

class Product(models.Model):
    product = models.ForeignKey(Brand)
    product_name = models.CharField(max_length=300)
    class Meta:
        ordering = ['product_name']
    def __unicode__(self):
        return self.product_name

假设我有 2 个品牌,每个品牌都有 2 个产品:佳能(相机、打印机)和三星(笔记本电脑、平板电脑)。当我创建产品实例时,我将能够在管理页面上按名称对它们进行排序:相机、笔记本电脑、打印机、平板电脑。到目前为止,一切都很好。但我实际上想做的是按[品牌+产品]对它们进行排序,因此排序列表应如下所示:“佳能-相机”、“佳能-打印机”、“三星-笔记本电脑”、“三星-平板电脑” '。

为此,我必须以某种方式从 Product 类中访问 brand_name 字段的值。这可能吗?如果可以,怎么做?还是有其他/更好的方法来实现这种类型的排序?

4

2 回答 2

0

你试过了吗:

class Meta:
    ordering = ['product_name', 'product'] #or ordering = ['product', 'product_name']
def __unicode__(self):
    return str(self.product_name) + " - " +str(self.product)
于 2013-08-09T11:24:05.670 回答
0

您可以在代码中访问它somemodel.brand.brand_name,并在过滤器/查询中访问它brand__brand_name

于 2013-08-09T11:26:01.417 回答