0

次のように定義された親モデルがあります。

class PurchaseOrder(models.Model):
    number =  models.CharField(max_length=30, unique=True)
    def services(self):
       return  self.service_set.filter(purchaseorder=self.pk)

子モデル サービスは次のように定義されます。

class Service(models.Model):
    purchaseorder = models.ForeignKey(PurchaseOrder)
    modules = models.ManyToManyField(Module)

    def get_modules(self):
        return self.modules.all()

ServiceモデルとM2M関係を持つ別のModel Moduleがあります。モジュールを親モデルの change_list ビュー、つまり list_display リストにリストとして表示したいと考えています。それ、どうやったら出来るの?データベースのヒット数への影響は?

4

1 に答える 1

0

あなたの例を使用して、私はこのようなことをします

class PurchaseOrder(models.Model):
    number = models.CharField(max_length=30, unique=True)

    def get_modules(self):
        return ', '.join([module.FIELD for service.modules.all() in self.service_set.filter(purchaseorder=self.pk) for module in service.modules.all()])

次にadmin.pyで

class PurchaseAdmin(admin.ModelAdmin):
    list_display = ('number', 'get_modules')

admin.site.register(Service, ServiceAdmin)

データベースのヒットについてはわかりませんが、django-debug-toolbarなどのツールを使用して、実装の前後に生成された SQL クエリを確認できます。

コメントに基づいて更新

上記のリスト内包表記を試して、それが機能するかどうかを確認してください。シェルで正しく出力するには、出力を少しいじる必要があるかもしれません。

于 2012-05-03T16:13:14.847 に答える