1

私は以下のmodels.pyを持っています

class site(models.Model):
    site_name = models.CharField(max_length=10)
    site_description = models.CharField(max_length=30, blank=True, null=True)
    def __unicode__(self):
        return self.site_name

class asset(models.Model):
    STAT_CHOICES = (('Available', 'Available'), ('Deployed', 'Deployed'), ('Down', 'Down'))
    asset_id = models.CharField(max_length=30, primary_key=True)
    owner = models.CharField(max_length=30, blank=True, null=True)
    status = models.CharField(choices=STAT_CHOICES, max_length=30, blank=True, null=True)
    site = models.ForeignKey(it_asset_site)
    notes = models.CharField(max_length=300, blank=True, null=True)

    def __unicode__(self):
        return self.asset_id

ご存知のように、テーブル「site」はデフォルトで site_id を PK として作成します。テーブル「asset」にデータをインポートした後、django の管理画面では、「site」は「site_name」と表示されます。その効果は「def unicode (self):」によって実現されます。だから私は同じ効果を得たい

f = asset.objects.filter(site__site_name__contains='NNG1')

ただし、「f」、「site」フィールドには、サンプルの NNG1(site_name) ではなく番号(site_id) が表示されます。

b = f.filter(site__site_name__contains='NNG1')
In [44]: b.values()[0]
Out[44]: 
{'asset_id': u'3914100271',
 'owner': u'',
 'status': None,
 'site_id': 8L,*****<-now*****
 'notes': u'',
}

フィルター結果を次のようにする方法がありました。

{'asset_id': u'3914100271',
 'owner': u'',
 'status': None,
 'site_name': u'NNG1',*****<-hope*****
 'notes': u'',
}

ジャンゴ管理ページのショーのように?ありがとう

4

1 に答える 1

0

では、フィールドをパラメータとして指定できますvalues()

b.values('asset_id', 'owner', 'status', 'site__name', 'notes')[0]
于 2013-08-08T09:25:25.717 に答える