-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

Canon (カメラ、プリンター) と Samsung (ラップトップ、タブレット) の 2 つのブランドがあり、それぞれに 2 つの製品があるとします。製品のインスタンスを作成すると、管理ページでカメラ、ラップトップ、プリンター、タブレットなどの名前で並べ替えることができます。ここまでは順調ですね。しかし、私が実際にやりたいのは、[ブランド + 製品] で並べ替えることです。したがって、並べ替えられたリストは次のようになります。「Canon - カメラ」、「Canon - プリンター」、「Samsung - ラップトップ」、「Samsung - タブレット」 '。

そのためには、何らかの方法で 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 に答える